diff --git a/server/httpgate/server/services/wsserver.js b/server/httpgate/server/services/wsserver.js index b02b6d4..5b28924 100644 --- a/server/httpgate/server/services/wsserver.js +++ b/server/httpgate/server/services/wsserver.js @@ -9,13 +9,41 @@ const metaFactory = require('../metadata/factory'); class WsServer extends BaseService { async init() { - const server = ws.createServer(function(socket){ - socket.on('text', function(str) { + const data = ''; + const server = ws.createServer((socket) => { + + socket.on('text', (str) => { console.log(str); + data += str; + //#0000000 + while (data.length >= 8) { + if (data[0] != '#') { + socket.close('error package'); + break; + } + const pkgLen = parseInt(data.slice(1, 7), 10); + if isNaN(pkgLen) { + socket.close('error pkgLen'); + break; + } + if (data.length >= 8 + pkgLen) { + this.parsePackage(data[8, 8 + pkgLen]); + data = data.slice(8 + pkgLen); + } + } }); + + socket.on('close', (code, reason) => { + console.log('connection close', code, reason); + }); + }).listen(3000); } + async parsePackage(data) { + console.log(data); + } + } module.exports = WsServer;