Skip to content

Small Websockets and TCP client/server sockets library written in TypeScript with support for TLS encryption. Runs in browser and NodeJS.

License

Notifications You must be signed in to change notification settings

bashlund/pocket-sockets

Repository files navigation

pocket-sockets

A powerful and smooth client/server sockets library for browser and Node.js, written in TypeScript with very few dependencies.

✔️ Written in TypeScript.

✔️ Support for both WebSockets and regular TCP sockets with a unified interface.

✔️ Works both in NodeJS and browser.

✔️ Supports SSL/TLS encryption with certificates.

✔️ Test suite of 105 tests.

WebSockets vs. regular TCP sockets

WebSockets are a must when using a browser, however plain TCP sockets are faster and a good choice when no browser is involved.

The overall interface for pocket-sockets WebSocket and TCP sockets are identical so it is easy to switch between the underlying implementations.

Example

For a quick glimpse of what it looks like to set up a server that receives a string from clients, then replies back and closes the connection afterwards, follow the example below:

import {WSServer, WSClient, ClientInterface} from "pocket-sockets";

const server = new WSServer({
    host: "localhost",
    port: 8181
});
server.listen();

server.onConnection( (client: ClientInterface) => {
    client.onData( (data: Buffer | string) => {
        client.send("This is server: received!");
    });
    client.onClose( () => {
        server.close();
    });
});

const client = new WSClient({
    host: "localhost",
    port: 8181
});
client.connect();

client.onConnect( () => {
    client.onData( (data: Buffer | string) => {
        client.close();
    });
    client.send("This is client: hello");
});

For complete examples, please refer to the files under the ./example directory.

Run tests

git clone https://github.com/bashlund/pocket-sockets.git
cd pocket-sockets
npm isntall
cd ./test/cert/ && ./generate_self_signed_cert.sh && cd ../..
npm test

Run examples

git clone https://github.com/bashlund/pocket-sockets.git
cd pocket-sockets
npm isntall
npx ts-node ./example/example-ws.ts
npx ts-node ./example/example-tcp.ts

Use in browser

For browser examples, please refer to the files under the ./example directory.

NPM

npm add --save pocket-sockets

Reference

Code documentation and API references are available in the official Wiki: https://github.com/bashlund/pocket-sockets/wiki.

Credits

Lib written by @bashlund, tests and wiki nicely crafted by @filippsen.

License

This project is released under the MIT license.

About

Small Websockets and TCP client/server sockets library written in TypeScript with support for TLS encryption. Runs in browser and NodeJS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages