Skip to main content

WebSocket

This library enables you to create WebSockets using Wing.

WebSockets offer a persistent, bidirectional communication channel between a client and a server, facilitating real-time, low-latency communication.

By incorporating WebSockets through the Wing library, developers can enhance the interactivity and responsiveness of their applications, delivering a more engaging user experience. Whether you're building a real-time chat application or a collaborative tool, understanding and implementing WebSockets with Wing can significantly elevate your web development projects.

Prerequisites​

Installation​

npm i @winglibs/websockets

Usage​

The example above shows us how we can broadcast a message to any connection assigned to the WebSocket.

bring cloud;
bring ex;
bring websockets;

let tb = new ex.DynamodbTable(
name: "WebSocketTable",
hashKey: "connectionId",
attributeDefinitions: {
"connectionId": "S",
},
);

let wb = new websockets.WebSocket(name: "MyWebSocket") as "my-websocket";

wb.onConnect(inflight(id: str): void => {
tb.putItem({
item: {
"connectionId": id
}
});
});

wb.onDisconnect(inflight(id: str): void => {
tb.deleteItem({
key: {
"connectionId": id
}
});
});

wb.onMessage(inflight (id: str, body: str): void => {
let connections = tb.scan();
for item in connections.items {
wb.sendMessage(str.fromJson(item["connectionId"]), body);
}
});

sim​

When executing in the Wing Simulator, the WebSocket uses the ws library.

tf-aws​

When running on AWS, the WebSocket utilizes the WebSocket API of API Gateway.

awscdk​

When running on AWS, the WebSocket utilizes the WebSocket API of API Gateway. To compile to awscdk, we need to import the @winglang/platform-awscdk.

Maintainers​

@marciocadev

License​

This library is licensed under the MIT License.​

API Reference​

Table of Contents​

WebSocket (preflight class) ​

No description

Constructor​

new(props: WebSocketProps): WebSocket

Properties​

NameTypeDescription
urlstrNo description

Methods​

SignatureDescription
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

platform.WebSocket_tfaws (preflight class) ​

No description

Constructor​

new(props: WebSocketProps): WebSocket_tfaws

Properties​

NameTypeDescription
urlstrNo description

Methods​

SignatureDescription
addRoute(handler: Function, routeKey: str): voidNo description
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

platform.WebSocket_sim (preflight class) ​

No description

Constructor​

new(props: WebSocketProps): WebSocket_sim

Properties​

NameTypeDescription
urlstrNo description

Methods​

SignatureDescription
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

platform.WebSocket_awscdk (preflight class) ​

No description

Constructor​

new(props: WebSocketProps): WebSocket_awscdk

Properties​

NameTypeDescription
urlstrNo description

Methods​

SignatureDescription
addRoute(handler: Function, routeKey: str): voidNo description
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

platform.aws.IAwsWebSocket (interface) ​

No description

Properties​

No properties

Methods​

SignatureDescription
addRoute(handler: Function, routeKey: str): voidNo description
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

commons.IWebSocket (interface) ​

No description

Properties​

No properties

Methods​

SignatureDescription
onConnect(handler: inflight (str): void): voidNo description
onDisconnect(handler: inflight (str): void): voidNo description
onMessage(handler: inflight (str, str): void): voidNo description
inflight sendMessage(connectionId: str, message: str): voidNo description

platform.aws.WebSocketAwsRequest (struct) ​

No description

Properties​

NameTypeDescription
bodystrNo description
requestContextWebSocketAwsRequestContextNo description

platform.aws.WebSocketAwsRequestContext (struct) ​

No description

Properties​

NameTypeDescription
connectionIdstrNo description
routeKeystrNo description

platform.aws.WebSocketAwsResponse (struct) ​

No description

Properties​

NameTypeDescription
bodystr?No description
statusCodenumNo description

commons.WebSocketProps (struct) ​

No description

Properties​

NameTypeDescription
namestrNo description
stageNamestr?No description