-
-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathserver.ts
More file actions
29 lines (20 loc) · 701 Bytes
/
server.ts
File metadata and controls
29 lines (20 loc) · 701 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { App, type Request } from '@tinyhttp/app'
import type { WebSocket } from 'ws'
import { type TinyWSRequest, tinyws } from '../../src/index'
const app = new App<Request & TinyWSRequest>()
app.use(tinyws())
let connections: WebSocket[] = []
app.use('/chat', async (req) => {
if (req.ws) {
const ws = await req.ws()
connections.push(ws)
ws.on('message', (message) => {
console.log('Received message:', message)
// broadcast
// biome-ignore lint/complexity/noForEach: <explanation>
connections.forEach((socket) => socket.send(message))
})
ws.on('close', () => (connections = connections.filter((conn) => conn !== ws)))
}
})
app.listen(3000)