网站搜索

typescript - nextjs 14 应用路由器 TRPC websocket 订阅服务器设置


我正在使用 nextJS 14 应用路由器结合 TRPC。我一直在尝试实现 TRPC 的 WebSocket 订阅功能,但我发现很少有关于如何实现的最新文档。

我确实偶然发现了一个资源,[这个仓库](https://github.com/trpc/examples-next-prisma-websockets-starter) 是由 trpc 的开发者维护的,不过它没有使用 app router。在里面,他们有两个值得注意的单独文件 prodServer.ts 和 wssDevServer.ts 位于 src/server/。理想情况下,应该只有一个文件用于为生产和开发环境设置 ws 服务器,那么为什么这里他们会为每个环境使用不同的文件呢?

如果我在自己的环境中实现开发服务器,我的套接字在连接后会立即关闭,因为在 applyWSSHandler 中调用的 createContext 函数发生错误。当调用任何仅在服务器端运行的函数(例如 cookies()、headers() 或 redirect())时,似乎会发生这种情况,导致我的服务器出现 500 错误,并关闭套接字连接。

我希望确保自己在 NextJS 应用中尽可能有效地实现 TRPC 的订阅,任何相关的知识都很感激。