🦕 A simple WebSocket library like ws of node.js library for deno
This library is wrapping the ws standard library as a server-side and the native WebSocket API as a client-side. You can receive callbacks at the EventEmitter and can use the same object format on both the server-side and the client-side.
Server side
$ deno run --allow-net https://deno.land/x/websocket@v0.1.4/example/server.ts
Client side
$ deno run --allow-net https://deno.land/x/websocket@v0.1.4/example/client.ts
ws connected! (type 'close' to quit)
> something
Server side
import { WebSocketClient, WebSocketServer } from "https://deno.land/x/websocket@v0.1.4/mod.ts";
const wss = new WebSocketServer(8080);
wss.on("connection", function (ws: WebSocketClient) {
ws.on("message", function (message: string) {
console.log(message);
ws.send(message);
});
});
Client side
import { WebSocketClient, StandardWebSocketClient } from "https://deno.land/x/websocket@v0.1.4/mod.ts";
const endpoint = "ws://127.0.0.1:8080";
const ws: WebSocketClient = new StandardWebSocketClient(endpoint);
ws.on("open", function() {
console.log("ws connected!");
ws.send("something");
});
ws.on("message", function (message: string) {
console.log(message);
});
event | detail |
---|---|
connection | Emitted when the handshake is complete |
error | Emitted when an error occurs |
field | detail | type |
---|---|---|
server.clients | A set that stores all connected clients | Set\<WebSocket> |
method | detail |
---|---|
close() | Close the server |
event | detail |
---|---|
open | Emitted when the connection is established |
close | Emitted when the connection is closed |
message | Emitted when a message is received from the server |
ping | Emitted when a ping is received from the server |
pong | Emitted when a pong is received from the server |
error | Emitted when an error occurs |
field | detail | type |
---|---|---|
websocket.isClosed | Get the close flag | Boolean | undefined |
method | detail |
---|---|
send(message:string | Unit8Array) | Send a message |
ping(message:string | Unit8Array) | Send the ping |
close([code:int[, reason:string]]) | Close the connection with the server |
forceClose() | Forcibly close the connection with the server |