server for my chess game
sockets
| -rw-r--r-- | package-lock.json | 15 | ||||
| -rw-r--r-- | package.json | 7 | ||||
| -rw-r--r-- | src/StreamTcp.js | 18 | ||||
| -rw-r--r-- | src/index.js | 49 |
4 files changed, 34 insertions, 55 deletions
diff --git a/package-lock.json b/package-lock.json index 1fb35c1..b7b006c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "gd-com-tcp-basic", + "name": "gd-com-websocket-basic", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -12,10 +12,23 @@ "long": "^4.0.0" } }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } } } } diff --git a/package.json b/package.json index ddb5c4e..6b6f62e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "gd-com-tcp-basic", + "name": "gd-com-websocket-basic", "version": "1.0.0", "description": "", "main": "src/index.js", @@ -10,9 +10,10 @@ "author": "", "license": "MIT", "dependencies": { - "@gd-com/utils": "^4.1.0" + "@gd-com/utils": "^4.1.0", + "ws": "^6.1.3" }, "engines": { "node": "16.15" } -} +}
\ No newline at end of file diff --git a/src/StreamTcp.js b/src/StreamTcp.js deleted file mode 100644 index 82306fe..0000000 --- a/src/StreamTcp.js +++ /dev/null @@ -1,18 +0,0 @@ -const Transform = require('stream').Transform - -class StreamTcp extends Transform { - _transform (chunk, enc, done) { - let buffer = chunk - while (buffer.length > 0) { - const length = buffer.readUInt16LE(0) - - const bufferSplitted = buffer.slice(4, length + 4) // 4 cause the length bytes is in buffer - buffer = buffer.slice(length + 4, buffer.length) // 4 cause the length bytes is in buffer - - this.push(bufferSplitted) - } - done() - } -} - -module.exports = StreamTcp
\ No newline at end of file diff --git a/src/index.js b/src/index.js index 2b2b951..ec8c1ce 100644 --- a/src/index.js +++ b/src/index.js @@ -1,35 +1,18 @@ -const net = require('net') -const { putVar, getVar } = require('@gd-com/utils') -const StreamTcp = require('./StreamTcp') - -var port = process.env.PORT || 8910 - -let server = net.createServer((socket) => { - const tcpSplit = new StreamTcp() - socket.pipe(tcpSplit).on('data', (data) => { - const packet = new Buffer.from(data) - - const decoded = getVar(packet) - console.log('receive :', decoded.value) - - const packetToSend = putVar(Math.random()) - - // we need to put the packet length on top cause it's tcp - const lengthBuffer = Buffer.alloc(4) - lengthBuffer.writeUInt32LE(packetToSend.length, 0) - const toSend = Buffer.concat([lengthBuffer, packetToSend]) - - console.log('send :', toSend) - socket.write(toSend) +const WebSocket = require('ws') +const gdCom = require('@gd-com/utils') + +const PORT = process.env.PORT || 3000; + +const wss = new WebSocket.Server({ port: PORT }) +console.log(`Server started on port ${PORT}`) +wss.on('connection', ws => { + console.log('connected') + ws.on('message', (message) => { + let recieveBuff = Buffer.from(message) + let recieve = gdCom.getVar(recieveBuff) + console.log(recieve.value) + + let buffer = gdCom.putVar(Math.random()) + ws.send(buffer) }) - - socket.on('error', () => console.log('Bye :(')) -}) - -server.on('error', (err) => { - throw err -}) - -server.listen(port, '0.0.0.0', () => { - console.log(`Server launched TCP 0.0.0.0:${port}`) }) |