- Introduction
- Quick start
- Philosophy
- Comparison
- Default behaviors
- Limitations
- Debugging runbook
- FAQ
- Mocking HTTP
- Mocking GraphQL
- Mocking WebSocket
- Integrations
- API
- CLI
- Best practices
- Recipes
Broadcasting data
Sending mocked data to multiple WebSocket clients.
You can send data to multiple WebSocket clients by calling the .broadcast()
method on the WebSocket link matching those client connections:
import { ws } from 'msw'
const chat = ws.link('wss://chat.example.com')
export const handlers = [
chat.addEventListener('connection', () => {
chat.broadcast('Hello, everyone!')
}),
]
Similar to the
client.send()
method, you can broadcast various data types.
This will send the same data to all intercepted WebSocket clients.
Examples
Excluding clients
You can exclude a specific client from the broadcast by using the broadcastExcept()
method of the WebSocket link and providing it with the client
instance to exclude:
import { ws } from 'msw'
const chat = ws.link('wss://chat.example.com')
export const handlers = [
chat.addEventListener('connection', (client) => {
client.addEventListener('message', (event) => {
// Whenever this client sends a message,
// broadcast it to all other clients.
chat.broadcastExcept(client, event.data)
})
}),
]
You can also provide a list of clients as the first argument to the broadcastExcept()
method to have a finer control over which clients get excluded from the broadcast:
chat.addEventListener('connection', () => {
chat.broadcastExcept(
chat.clients.filter((client) => {
return client
}),
'Hello to some of you!',
)
})
The
clients
property of your WebSocket link contains an array of all intercepted clients.