node-ws-packets
Version:
A packet-based javascript websocket communitcation.
69 lines (60 loc) • 1.68 kB
JavaScript
const { Packet, Server, Client } = require("./Packets");
const {Validator, DetailedValue} = require("node-data-validator");
console.log(Packet, Server);
// Websocket
const { WebSocket, WebSocketServer } = require("ws");
// Create Websocket Server
const wss = new WebSocketServer({
port: 8080
});
/**
* PACKET MANAGER SERVER
*/
// Create Packet Manager
const pm = new Server(wss, {log: true, keepAlive: true});
// Add Connection Handler to each new client
pm.onConnect((ws) => {
// Send Test Packet
ws.sendPacket(new Ping({timestamp: Date.now()}));
wss.close();
});
// Add Disconnection Handler to each new client
pm.onDisconnect((ws, event) => {
console.log("server", "Client has disconnected!", event);
});
// Add Error Handler
pm.onError((ws, error) => {
console.log(ws.id, error);
});
pm.onInvalid((ws, packet) => {
console.log(ws.id, packet);
});
// Create WS Client for testing
const ws = new WebSocket("ws://localhost:8080/?test=test");
/**
* PACKET MANAGER CLIENT
*/
const cm = new Client(ws, {log: true,keepAlive: true});
/**
* Connection Events for client
*/
cm.onConnect((ws) => {
console.log("client", "I have connected!");
ws.sendPacket(new Ping({timestamp: "I am Broken!"}));
ws.close();
});
cm.onDisconnect((ws) => {
console.log("client", "I have disconnected!");
});
// Add Error Handler
pm.onError((ws, error) => {
console.log(error);
});
cm.onInvalid((ws, packet) => {
console.log(packet);
});
// Add Packets
const Ping = require("./example/Ping");
// Add Packet to Managers
pm.addPacket(new Ping());
cm.addPacket(new Ping());