1.0.6 • Published 3 years ago

wsbitpacket v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
3 years ago

wsbitpacket

Welcome to wsbitpacket, a fast, reliable, and simple way to send binary packets between server and client via websockets.

Installation

npm install wsbitpacket

Binary Types Support

TypeRange
Uint80 - 255
Uint160 - 65,535
Uint240 - 16,777,215
Uint320 - 4,294,967,295
Int8-128 - 127
Int16-32,768 - 32,767
Int24-8,388,608 - 8,388,607
Int32-2,147,483,648 - 2,147,483,647
BigInt64really big +/-
BigUint64even bigger +/-
Float324 bytes of decimal
Float648 bytes of decimal
Stringunicode char 0-255 any length

How does it work?

Server.js

import bitpacket from 'wsbitpacket';

const PORT = process.env.PORT || 3000;

// Define how your packets will look
const schemas = new bitpacket.BitSchema(
    // Server schemas
    [
        { name: 'playerUpdate', data: { id: bitpacket.BinaryTypes.Uint8, x: bitpacket.BinaryTypes.Uint16, y: bitpacket.BinaryTypes.Uint16 } },
        { name: 'healthUpdate', data: { health: bitpacket.BinaryTypes.Uint8 } },
    ],
    // Client Schemas
    [
        { name: 'mousemove', data: { angle: bitpacket.BinaryTypes.Uint8 } },
        { name: 'chat', data: { message: bitpacket.BinaryTypes.String } },
        { name: 'bigNumber', data: { number: bitpacket.BinaryTypes.BigUint64 } },
    ]
);

const server = new bitpacket.Server(PORT, schemas);

// A client connects to the websocket
server.onConnection((socket, req) => {
    socket.on('disconnect', () => {
        // client disconnected
    });

    socket.on('mousemove', data => {
        // server receives a message from the client based on the client-send schemas^
        // data: { angle: 49 }
    });
    socket.on('bigNumber', data => {
        // data: {number: 9999999999999999999n }
    });

    // Server sends a message to the client based on the server-send schemas^
    socket.send('playerUpdate', {
        id: 63,
        x: 9999,
        y: 5493,
    });
});

Client.js

import bitpacket from 'wsbitpacket';

const PORT = 3000;

const client = new bitpacket.Client(`ws://localhost:${PORT}`);

client.on('connection', () => {
    // send a packet to the server based on how you defined your client-send schemas^
    client.send('mousemove', {
        angle: 49,
    });
    client.send('bigNumber', {
        // when sending BigUint64 or BigInt64 make sure to put an "n" at the end of the numebr
        // or wrap it in BigInt()
        number: 9999999999999999999n,
    });
    // disconnect from the server
    client.disconnect();
});

client.on('disconnect', () => {
    // the client has disconnected from the server
});

// Fired when the server sends you an update, in this case, playerUpdate
client.on('playerUpdate', data => {
    // data: { id: 63, x: 9999, y: 5493 }
});

Contribute

Found a problem or want to contrubute? Fork this repository and leave pull request

MIT License

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago