MCPcopy Create free account
hub / github.com/TomDoesTech/Realtime-Chat-Application / socket

Function socket

server/src/socket.ts:21–78  ·  view source on GitHub ↗
({ io }: { io: Server })

Source from the content-addressed store, hash-verified

19const rooms: Record<string, { name: string }> = {};
20
21function socket({ io }: { io: Server }) {
22 logger.info(`Sockets enabled`);
23
24 io.on(EVENTS.connection, (socket: Socket) => {
25 logger.info(`User connected ${socket.id}`);
26
27 socket.emit(EVENTS.SERVER.ROOMS, rooms);
28
29 /*
30 * When a user creates a new room
31 */
32 socket.on(EVENTS.CLIENT.CREATE_ROOM, ({ roomName }) => {
33 console.log({ roomName });
34 // create a roomId
35 const roomId = nanoid();
36 // add a new room to the rooms object
37 rooms[roomId] = {
38 name: roomName,
39 };
40
41 socket.join(roomId);
42
43 // broadcast an event saying there is a new room
44 socket.broadcast.emit(EVENTS.SERVER.ROOMS, rooms);
45
46 // emit back to the room creator with all the rooms
47 socket.emit(EVENTS.SERVER.ROOMS, rooms);
48 // emit event back the room creator saying they have joined a room
49 socket.emit(EVENTS.SERVER.JOINED_ROOM, roomId);
50 });
51
52 /*
53 * When a user sends a room message
54 */
55
56 socket.on(
57 EVENTS.CLIENT.SEND_ROOM_MESSAGE,
58 ({ roomId, message, username }) => {
59 const date = new Date();
60
61 socket.to(roomId).emit(EVENTS.SERVER.ROOM_MESSAGE, {
62 message,
63 username,
64 time: `${date.getHours()}:${date.getMinutes()}`,
65 });
66 }
67 );
68
69 /*
70 * When a user joins a room
71 */
72 socket.on(EVENTS.CLIENT.JOIN_ROOM, (roomId) => {
73 socket.join(roomId);
74
75 socket.emit(EVENTS.SERVER.JOINED_ROOM, roomId);
76 });
77 });
78}

Callers 1

app.tsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected