MCPcopy
hub / github.com/tldraw/tldraw / makeOrLoadRoom

Function makeOrLoadRoom

templates/socketio-server-example/src/server/rooms.ts:18–48  ·  view source on GitHub ↗
(roomId: string)

Source from the content-addressed store, hash-verified

16const rooms = new Map<string, TLSocketRoom<any, void>>()
17
18export function makeOrLoadRoom(roomId: string): TLSocketRoom<any, void> {
19 roomId = sanitizeRoomId(roomId)
20
21 const existing = rooms.get(roomId)
22 if (existing && !existing.isClosed()) {
23 return existing
24 }
25
26 console.log('loading room', roomId)
27
28 // Open the database - file is created if it doesn't exist
29 const db = new Database(join(DIR, `${roomId}.db`))
30 const sql = new NodeSqliteWrapper(db)
31 const storage = new SQLiteSyncStorage({ sql })
32
33 const room = new TLSocketRoom({
34 storage,
35 onSessionRemoved(room, args) {
36 console.log('client disconnected', args.sessionId, roomId)
37 if (args.numSessionsRemaining === 0) {
38 console.log('closing room', roomId)
39 room.close()
40 db.close()
41 rooms.delete(roomId)
42 }
43 },
44 })
45
46 rooms.set(roomId, room)
47 return room
48}

Callers 1

server.tsFile · 0.90

Calls 5

sanitizeRoomIdFunction · 0.70
getMethod · 0.65
logMethod · 0.65
setMethod · 0.65
isClosedMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…