From c50dbd5b1892746156522d3587f56f2f9c47c51f Mon Sep 17 00:00:00 2001 From: Kubbo <390378816@qq.com> Date: Wed, 9 Apr 2025 08:19:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20GateServer=20?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=B9=B6=E5=88=9B=E5=BB=BA=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 GateServer 类,实现基本的 TCP 服务器功能 - 创建服务端启动脚本,定义数据处理和事件监听逻辑 - 添加 package.json 文件,配置项目信息和启动脚本 --- GateServer/index.js | 38 ++++++++++++++++++++++++++++++++++++++ GateServer/start.js | 22 ++++++++++++++++++++++ package.json | 14 ++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 GateServer/index.js create mode 100644 GateServer/start.js create mode 100644 package.json diff --git a/GateServer/index.js b/GateServer/index.js new file mode 100644 index 0000000..7f8d565 --- /dev/null +++ b/GateServer/index.js @@ -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; \ No newline at end of file diff --git a/GateServer/start.js b/GateServer/start.js new file mode 100644 index 0000000..7ea1a21 --- /dev/null +++ b/GateServer/start.js @@ -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(); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..17f411c --- /dev/null +++ b/package.json @@ -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" +}