38 lines
979 B
JavaScript
38 lines
979 B
JavaScript
|
|
const net = require('net');
|
||
|
|
const EventEmitter = require('events');
|
||
|
|
|
||
|
|
class GateServer extends EventEmitter {
|
||
|
|
constructor(port, host) {
|
||
|
|
super();
|
||
|
|
this.port = port;
|
||
|
|
this.host = host;
|
||
|
|
this.server = net.createServer(this.handleConnection.bind(this));
|
||
|
|
}
|
||
|
|
|
||
|
|
start() {
|
||
|
|
this.server.listen(this.port, this.host, () => {
|
||
|
|
console.log(`GateServer is listening on ${this.host}:${this.port}`);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
handleConnection(socket) {
|
||
|
|
console.log('New client connected');
|
||
|
|
this.emit('connection', socket);
|
||
|
|
|
||
|
|
socket.on('data', (data) => {
|
||
|
|
this.emit('data', socket, data);
|
||
|
|
});
|
||
|
|
|
||
|
|
socket.on('end', () => {
|
||
|
|
console.log('Client disconnected');
|
||
|
|
this.emit('end', socket);
|
||
|
|
});
|
||
|
|
|
||
|
|
socket.on('error', (err) => {
|
||
|
|
console.error('Socket error:', err);
|
||
|
|
this.emit('error', err);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = GateServer;
|