我正在尝试为我的websocket服务器创建一个动态创建的空间。我的文件服务器需要告诉客户端有关他们上传的文件的信息,例如处理进度和类似的东西。这是我的看法:websocket服务器的动态路由expressjs
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。但是,我需要为每个客户端会话上传留出空间,我该怎么做?
编辑:我没有谷歌这个,但没有找到任何东西。
什么是动态路线,为什么你认为你需要它?您需要描述您尝试解决的实际问题。您不必为每个客户端创建一个单独的webSocket服务器。您可以创建一个所有客户端连接的服务器,通常客户端标识自己(他们是谁),以便一台服务器可以满足他们的所有需求。如果你打算创建多个服务器,那么它们都必须位于不同的端口上,并且你可能必须使用CORS,以便客户端可以访问它们。 – jfriend00
@ jfriend00对不起,我对websockets很陌生。我的意思是说像一个客户可以连接的“房间”。例如:websockets.com/someroom或websockets.com/someroom2 –
让客户端连接到您的一个webSocket服务器,然后发送关于他们想要进入的房间的后续消息。并且,请编辑您的问题以描述这而不是只在评论中。或者,在初始连接时使用查询参数指定房间。 – jfriend00