server for my chess game
sockets
bendn 2022-05-05
parent 4625dae · commit 2d440b8
-rw-r--r--package-lock.json15
-rw-r--r--package.json7
-rw-r--r--src/StreamTcp.js18
-rw-r--r--src/index.js49
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}`)
})