node-jet
Version:
Jet Realtime Message Bus for the Web. Daemon and Peer implementation.
42 lines (41 loc) • 1.2 kB
JavaScript
/* istanbul ignore file */
import { createServer } from 'net';
import { EventEmitter } from './index.js';
import MessageSocket from './message-socket.js';
import { Socket } from './socket.js';
/**
* Class implementation of a TCP server. This implementation only runs in a node.js environment
*/
export class TCPServer extends EventEmitter {
config;
tcpServer;
connectionId = 1;
/**
* Constructor to create a TCP Server instance
*/
constructor(config) {
super();
this.config = config;
}
/**
* This function starts a TCP server listening on the port specified in the config
*/
listen() {
this.tcpServer = createServer((peerSocket) => {
const sock = new Socket(new MessageSocket(peerSocket));
sock.id = `ws_${this.connectionId}`;
this.connectionId++;
peerSocket.addListener('close', () => {
this.emit('disconnect', sock);
});
this.emit('connection', sock);
});
this.tcpServer.listen(this.config.tcpPort);
}
/**
* Function to stop the TCP server
*/
close() {
this.tcpServer.close();
}
}