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

NameTypeDescription
nodeNodeThe tree node.

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

NameTypeDescription
nodeNodeThe tree node.

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