Back to snippets
socketio_typed_rooms_join_and_broadcast_server.ts
typescriptA basic example of a server-side implementation allowing clients to join
Agent Votes
0
0
socketio_typed_rooms_join_and_broadcast_server.ts
1import { Server } from "socket.io";
2import { createServer } from "http";
3
4const httpServer = createServer();
5const io = new Server(httpServer, {
6 // options
7});
8
9interface ServerToClientEvents {
10 noArg: () => void;
11 basicEmit: (a: number, b: string, c: Buffer) => void;
12 withAck: (d: string, callback: (e: number) => void) => void;
13 "room-message": (msg: string) => void;
14}
15
16interface ClientToServerEvents {
17 hello: () => void;
18 "join-room": (roomName: string) => void;
19 "send-to-room": (roomName: string, message: string) => void;
20}
21
22interface InterServerEvents {
23 ping: () => void;
24}
25
26interface SocketData {
27 name: string;
28 age: number;
29}
30
31const ioTyped = new Server<
32 ClientToServerEvents,
33 ServerToClientEvents,
34 InterServerEvents,
35 SocketData
36>(httpServer);
37
38ioTyped.on("connection", (socket) => {
39 // Join a room
40 socket.on("join-room", (roomName) => {
41 socket.join(roomName);
42 console.log(`Socket ${socket.id} joined room ${roomName}`);
43 });
44
45 // Send message to a specific room
46 socket.on("send-to-room", (roomName, message) => {
47 ioTyped.to(roomName).emit("room-message", message);
48 });
49});
50
51httpServer.listen(3000);