UNPKG

mudb

Version:

Real-time database for multiplayer games

191 lines 6.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const test = require("tape"); const tcp = require("net"); const udp = require("dgram"); const port_1 = require("../../../util/port"); const server_1 = require("../server"); const client_1 = require("../client"); const socket_1 = require("../../socket"); function noop() { } function randomId() { return Math.random().toString(36).substr(2); } test.onFinish(() => process.exit(0)); const tcpServer = tcp.createServer(); const udpServer = udp.createSocket({ type: 'udp4', }); const socketServer = new server_1.MuNetSocketServer({ tcpServer, udpServer, }); const UDP_HOST_ADDR = '127.0.0.1'; let tcpServerPort; tcpServer.listen(() => { const addr = tcpServer.address(); if (typeof addr === 'string') { tcpServerPort = +addr; console.log(`TCP server running on ${addr}`); } else { tcpServerPort = addr.port; console.log(`TCP server running on ${addr.address}:${addr.port}`); } }); port_1.findPort((port) => { udpServer.bind({ port, address: UDP_HOST_ADDR, }, () => console.log(`UDP server running on ${'' + udpServer.address()}`)); }); socketServer.start({ ready: () => { port_1.findPort((udpPort) => { test('socket initial state', (t) => { const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); t.equal(socket.state(), socket_1.MuSocketState.INIT, 'should be INIT'); t.end(); }); }); port_1.findPort((udpPort) => { test('socket.open() - when INIT', (t) => { t.plan(2); const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.open({ ready: () => { t.ok(true, 'should invoke ready handler'); t.equal(socket.state(), socket_1.MuSocketState.OPEN, 'should change state to OPEN'); }, message: noop, close: noop, }); }); }); port_1.findPort((udpPort) => { test('socket.open() - when OPEN', (t) => { t.plan(1); const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.open({ ready: () => t.throws(() => socket.open({ ready: noop, message: noop, close: noop, }), /opened/), message: noop, close: noop, }); }); }); port_1.findPort((udpPort) => { test('socket.open() - when CLOSED', (t) => { t.plan(1); const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.open({ ready: () => socket.close(), message: noop, close: () => t.throws(() => socket.open({ ready: noop, message: noop, close: noop, }), /opened/), }); }); }); port_1.findPort((udpPort) => { test('socket.close() - when INIT', (t) => { const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.close(); t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change state to CLOSED'); t.end(); }); }); port_1.findPort((udpPort) => { test('socket.close() - when OPEN', (t) => { t.plan(2); const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.open({ ready: () => socket.close(), message: noop, close: () => { t.ok(true, 'should invoke close handler'); t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change state to CLOSED'); }, }); }); }); port_1.findPort((udpPort) => { test('socket.close() - when CLOSED', (t) => { t.plan(1); const socket = new client_1.MuNetSocket({ sessionId: randomId(), connectOpts: { port: tcpServerPort, }, bindOpts: { port: udpPort, }, }); socket.open({ ready: () => socket.close(), message: noop, close: () => { socket.close(); t.ok(true, 'should not invoke close handler'); }, }); }); }); }, connection: noop, close: noop, }); //# sourceMappingURL=client.js.map