UNPKG

antena

Version:

Simple messaging protocol for node's net socket

103 lines (91 loc) 2.38 kB
const {strict:Assert} = require("assert"); const Net = require("net"); const { registerSocket, getMaxByteLength } = require("../lib/main.js"); const server = new Net.Server(); server.on("error", () => { console.log("Server error:", error.message); }); server.on("close", () => { console.log("Server closed"); }); let counter = 0; server.on("connection", (socket) => { console.log("Server connection"); counter += 1; registerSocket(socket); socket.on("message", (message) => { console.log("Server socket received:", message); socket.send("bar"); }); socket.on("error", () => { console.log("Server socket error:", error.message); throw error; }); socket.on("end", () => { console.log("Server socket end"); }); socket.on("close", (hadError) => { console.log("Server socket close:", hadError); counter -= 1; if (counter === 0) { next(); } }); }); const next = () => { const {done, value:test} = iterator.next(); if (done) { console.log("Closing server"); server.close(); } else { console.log("Connecting to server"); const socket = Net.connect(server.address().port); socket.on("connect", () => { counter += 1; console.log("Client socket connection"); test(socket); }); socket.on("error", (error) => { console.log("Client socket error:", error.message); throw error; }); socket.on("end", () => { console.log("Client socket end"); }); socket.on("close", (hadError) => { console.log("Client socket close:", hadError); counter -= 1; if (counter === 0) { next(); } }); } }; const iterator = [ (socket) => { registerSocket(socket); Assert.throws( () => socket.send("x".repeat(getMaxByteLength() + 1)), /^Error: The message byte length is too large/), socket.send("foo"); socket.on("readable", () => { socket.on("message", (message) => { console.log("Client socket received:", message); socket.end(); }); }); }, (socket) => { socket.end(Buffer.alloc(2, 0)); }, (socket) => { const buffer = Buffer.alloc(6, 0); buffer.writeUInt32LE(8); socket.end(buffer); }, ][Symbol.iterator](); server.listen(0, () => { const port = server.address().port; console.log("Listening to port", port); next(); });