我正在嘗試爲我的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