ZilaWS is a blazingly fast and very lightweight library that provides an extremely easy-to-use way to transmit data via websockets between client-side and server-side using eventhandlers and async waiters
Looking for the zilaws-server package?
ZilaWS can establish WS connection to a non-zilaws server, but won't work as expected.
ZilaWS has a unique function called waiter
. Waiters (as their name suggests) can be awaited.
They resolve when the client side MessageHandler resolves or returns thus making it perfect for retrieving data from a client.
However if the client does not respond in time, waiters will resolve as undefined.
Regular waiters wait for a response for the amount of time specified by the maxWaiterTime
property. This is a property of the client.
-
identifier
: The name of the MessageHandler on the other side of the connection. -
...data
: A waiter (or a send) can be given any number of any data.
socket.waiter<T>(identifier: string, ...data: any[]): Promise<T | undefined>
-
maxWaitingTime
: This paramater overrides the maximum waiting time for the correspondingwaiter
. The value is in miliseconds.
socket.waiterTimeout<T>(identifier: string, maxWaitingTime: number, ...data: any[]): Promise<T | undefined>
const client = await connectTo("wss://yourhost.com:6589");
console.log(await client.waiter("GetValueOfPI", "Some string") as number); // --> 3.141592653589793
console.log(await client.waiterTimeout("GetValueOfPI", 1200, "Some string") as number); // --> 3.141592653589793
const server = new ZilaServer({
port: 6589,
https: {
pathToCert: "cert/fullchain.pem",
pathToKey: "cert/privkey.pem"
}
});
server.setMessageHandler("GetValueOfPI", (param1: string) => {
console.log(param1); // --> Some string
return Math.PI;
});
ZilaWS offers much more. Check out the documentation!