From 9ea6188f8b409d291cd9877e70ff8f3ea279b514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 11 Jul 2024 19:12:07 +0200 Subject: [PATCH] WebSocket work --- packages/server/src/{express => http}/ExpressApp.ts | 0 .../server/src/{express => http}/ExpressHTTPServer.ts | 0 packages/server/src/index.ts | 4 ++-- packages/server/src/rpc/RPCPlaygroundRoute.ts | 2 +- packages/server/src/rpc/RPCServerRoute.ts | 2 +- packages/server/src/rpc/RPCWebSocketServer.ts | 8 ++++++-- 6 files changed, 10 insertions(+), 6 deletions(-) rename packages/server/src/{express => http}/ExpressApp.ts (100%) rename packages/server/src/{express => http}/ExpressHTTPServer.ts (100%) diff --git a/packages/server/src/express/ExpressApp.ts b/packages/server/src/http/ExpressApp.ts similarity index 100% rename from packages/server/src/express/ExpressApp.ts rename to packages/server/src/http/ExpressApp.ts diff --git a/packages/server/src/express/ExpressHTTPServer.ts b/packages/server/src/http/ExpressHTTPServer.ts similarity index 100% rename from packages/server/src/express/ExpressHTTPServer.ts rename to packages/server/src/http/ExpressHTTPServer.ts diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index bf52c56..ca623bb 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -4,8 +4,8 @@ import { Identifiable } from "@todo-tests/common/traits" import { Chunk, Effect, Layer, Stream } from "effect" import { ServicesLive } from "./Services" import { TodoRepository, createDefaultTodos } from "./TodoRepository" -import { ExpressApp } from "./express/ExpressApp" -import { ExpressHTTPServer } from "./express/ExpressHTTPServer" +import { ExpressApp } from "./http/ExpressApp" +import { ExpressHTTPServer } from "./http/ExpressHTTPServer" import { RPCPlaygroundRoute } from "./rpc/RPCPlaygroundRoute" import { RPCRouter } from "./rpc/RPCRouter" import { RPCServerRoute } from "./rpc/RPCServerRoute" diff --git a/packages/server/src/rpc/RPCPlaygroundRoute.ts b/packages/server/src/rpc/RPCPlaygroundRoute.ts index aae1a3c..403c939 100644 --- a/packages/server/src/rpc/RPCPlaygroundRoute.ts +++ b/packages/server/src/rpc/RPCPlaygroundRoute.ts @@ -1,7 +1,7 @@ import { Effect, Layer } from "effect" import { expressHandler } from "trpc-playground/handlers/express" import { rpcHTTPPlaygroundRoot, rpcHTTPRoot } from "../config" -import { ExpressApp } from "../express/ExpressApp" +import { ExpressApp } from "../http/ExpressApp" import { RPCRouter } from "./RPCRouter" diff --git a/packages/server/src/rpc/RPCServerRoute.ts b/packages/server/src/rpc/RPCServerRoute.ts index 950e1ff..a8a8e53 100644 --- a/packages/server/src/rpc/RPCServerRoute.ts +++ b/packages/server/src/rpc/RPCServerRoute.ts @@ -1,7 +1,7 @@ import { createExpressMiddleware } from "@trpc/server/adapters/express" import { Effect, Layer } from "effect" import { rpcHTTPRoot } from "../config" -import { ExpressApp } from "../express/ExpressApp" +import { ExpressApp } from "../http/ExpressApp" import { TRPCContextCreator } from "../trpc/TRPCContextCreator" import { RPCRouter } from "./RPCRouter" diff --git a/packages/server/src/rpc/RPCWebSocketServer.ts b/packages/server/src/rpc/RPCWebSocketServer.ts index 9047e11..f2611e0 100644 --- a/packages/server/src/rpc/RPCWebSocketServer.ts +++ b/packages/server/src/rpc/RPCWebSocketServer.ts @@ -1,7 +1,7 @@ import { applyWSSHandler } from "@trpc/server/adapters/ws" import { Context, Effect, Layer, Runtime } from "effect" import ws from "ws" -import { ExpressHTTPServer } from "../express/ExpressHTTPServer" +import { ExpressHTTPServer } from "../http/ExpressHTTPServer" import { TRPCContextCreator } from "../trpc/TRPCContextCreator" import { RPCRouter } from "./RPCRouter" @@ -33,8 +33,12 @@ export module RPCWebSocketServer { }), ({ wss, handler }) => Effect.gen(function*() { + yield* Effect.logInfo(`WebSocket server is closing. Waiting for existing connections to end...`) + handler.broadcastReconnectNotification() - wss.close() + yield* Effect.async(resume => { + wss.close(() => resume(Effect.logInfo(`WebSocket server closed`))) + }) }), )) }