gpt4 book ai didi

node.js - websocket服务器expressjs中的动态路由

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:44 25 4
gpt4 key购买 nike

我正在尝试为我的 websocket 服务器创建一个动态创建的房间。我的文件服务器需要告诉客户端有关他们上传的文件的信息,例如处理进度等。这是我的观点:

export function myView(req, res) {

let file = req.file;
let socketpath = ('/sockets/' + socketid + '/') // A randomly generated id
let wss = new WebSocketServer({port: 3030, path: socketpath});

...
}

这有效,但只能一次。当我尝试向服务器发送另一个文件时,我收到此错误:

Error: listen EADDRINUSE 0.0.0.0:3030
at Object.exports._errnoException (util.js:873:11)
at exports._exceptionWithHostPort (util.js:896:20)
at Server._listen2 (net.js:1250:14)
at listen (net.js:1286:10)
at net.js:1395:9
at nextTickCallbackWith3Args (node.js:453:9)
at process._tickDomainCallback (node.js:400:17)

显然这是因为我在同一端口创建另一个 wss。但我需要为每个客户端 session 上传提供一个空间,我该如何实现呢?

编辑:我用谷歌搜索了这个,但没有找到任何东西。

最佳答案

通常,您只需创建一台服务器,所有客户端都将连接到该一台服务器。客户端可以通过使用连接 URL 上的查询参数或在连接后向服务器发送消息来指定他们想要连接的房间,指定他们想要加入哪个房间。然后,您将跟踪一台服务器上哪个房间中的哪些套接字,以便您的服务器可以在这些房间中实现您想要的任何功能(例如向房间“xxx”中的每个人发送消息或向房间“xxx”中的所有其他用户发送消息)。

创建多个服务器的唯一方法是让每个服务器都位于自己的端口上,但是客户端必须知道要连接到哪个端口,并且您必须实现 CORS,以便浏览器允许连接。每个单独连接的唯一服务器很快就会变得困惑,并且通常不需要。

关于node.js - websocket服务器expressjs中的动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com