From c0ac68a516c20e50a353fde2205554363f3bbb19 Mon Sep 17 00:00:00 2001 From: Bastien OLLIER Date: Tue, 11 Jun 2024 11:40:13 +0200 Subject: [PATCH] Keep exiting code when creating a room (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: bastien ollier Reviewed-on: https://codefirst.iut.uca.fr/git/sandkasten/labyrinth/pulls/5 Reviewed-by: Clément FRÉVILLE Co-authored-by: Bastien OLLIER Co-committed-by: Bastien OLLIER --- src/server.ts | 52 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/server.ts b/src/server.ts index 51d8de6..f859d62 100644 --- a/src/server.ts +++ b/src/server.ts @@ -14,18 +14,14 @@ await sender.bind(`tcp://127.0.0.1:5557`); const receiver = new Pull(); await receiver.bind(`tcp://127.0.0.1:5558`); - const clients: Record = {}; const generateId = () => nanoid(32); -//let updates: Update[] = []; -//let doc = Text.of(["foo"]); - type Room = { sockets: WebSocket[]; updates: Update[]; doc: Text; -} +}; const rooms: Record = {}; @@ -46,26 +42,25 @@ await fastify.register(cors, { }); fastify.register(websocket); - -fastify.register(async function (fastify: Fastify) { +fastify.register(async function(fastify: Fastify) { fastify.get( "/live/:roomId", { schema: { - params: Type.Object({ - roomId: Type.String(), - }) + params: Type.Object({ + roomId: Type.String(), + }), }, - websocket: true + websocket: true, }, (socket, request) => { const { roomId } = request.params; let room = rooms[roomId]; - if(!room){ + if (!room) { room = { sockets: [], updates: [], - doc: Text.of(['']) + doc: Text.of([""]), }; rooms[roomId] = room; } @@ -102,16 +97,33 @@ fastify.register(async function (fastify: Fastify) { send(socket, requestId, { version: room.updates.length, doc: room.doc.toString() }); } }); - }); -}) + }, + ); +}); /* Route pour créer une room */ -fastify.post( - "/live", - async (request, reply) => { - return generateId(); +fastify.post("/live", { + schema: { + body: Type.Object({ + code: Type.String(), + }), }, -); +}, (request, reply) => { + const { code } = request.body; + let room, roomId; + do { + roomId = generateId(); + room = rooms[roomId]; + } while (room); + + room = { + sockets: [], + updates: [], + doc: Text.of([code]), + }; + rooms[roomId] = room; + return roomId; +}); fastify.post("/run", { schema: {