feat: 添加 GateServer 模块并创建服务端基础框架
- 新增 GateServer 类,实现基本的 TCP 服务器功能 - 创建服务端启动脚本,定义数据处理和事件监听逻辑 - 添加 package.json 文件,配置项目信息和启动脚本
This commit is contained in:
38
GateServer/index.js
Normal file
38
GateServer/index.js
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
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;
|
||||||
22
GateServer/start.js
Normal file
22
GateServer/start.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
const GateServer = require('./index');
|
||||||
|
|
||||||
|
const server = new GateServer(8080, '127.0.0.1');
|
||||||
|
|
||||||
|
server.on('connection', (socket) => {
|
||||||
|
console.log('A new client has connected');
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('data', (socket, data) => {
|
||||||
|
console.log('Received data:', data.toString());
|
||||||
|
socket.write('Echo: ' + data);
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('end', (socket) => {
|
||||||
|
console.log('Client has disconnected');
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on('error', (err) => {
|
||||||
|
console.error('Server error:', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
server.start();
|
||||||
14
package.json
Normal file
14
package.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "node-mir-server",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "冰雪传奇服务端",
|
||||||
|
"scripts": {
|
||||||
|
"gateway": "node GateServer/start.js"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"mir",
|
||||||
|
"server"
|
||||||
|
],
|
||||||
|
"author": "kubbo",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user