Node.js - websocket.send()

Send a message to a connected websocket client.

import { websocket } from '@nitric/sdk'
const socket = websocket('socket')
/**
* Send a message to a connected client.
*
* @param connectionId the client received when connecting to the websocket
* @param message to send to the client
*/
const sendMessage = async (connectionId, message) => {
await socket.send(connectionId, message)
}

Parameters

  • Name
    connectionId
    Required
    Required
    Type
    string
    Description

    The ID of the connection which should receive the message.

  • Name
    message
    Required
    Required
    Type
    string | Uint8Array | Record<string, any>
    Description

    The message that should be sent to the connection.

Examples

Broadcasting a message to all connections.

Do not send messages to a connection during it's connect callback, if you need to acknowledge connection, do so by using a topic

import { websocket, kv } from '@nitric/sdk'
const socket = websocket('socket')
const connections = kv('connections').allow('get', 'set', 'delete')
socket.on('connect', async (ctx) => {
let conns = {}
try {
conns = await connections.get('connections')
} catch (e) {
console.log('creating new connections store')
}
await connections.set('connections', {
...conns,
[ctx.req.connectionId]: new Date(),
})
})
socket.on('disconnect', async (ctx) => {
const conns = await connections.get('connections')
delete conns[ctx.req.connectionId]
await connections.set('connections', conns)
})
const broadcast = async (data) => {
const conns = await connections.get('connections')
await Promise.all(
Object.keys(conns).map(async (connectionId) => {
// Send message to a connection
await socket.send(connectionId, data)
}),
)
}
socket.on('message', async (ctx) => {
// broadcast message to all clients (including the sender)
await broadcast(ctx.req.data)
})
Last updated on Oct 16, 2024