我使用的是快遞的頂部socket.io /節點快遞,保持變量對每個用戶
現在,我用這個方法:
// get room name from URL
var requestRoom;
app.get('/editor/:room', function(req, res) {
requestRoom = req.params.room;
res.render('editor/editor', {
title: 'Editor'
});
});
// use that room name for private rooms within socket.io
io.on('connection', function(socket) {
socket.join(requestRoom);
// rest of socket.io code....
從URL抓取room-name
看起來像sitename.io/editor/[room-name]
。
然後,我使用requestRoom
作爲socket.to(requestRoom).broadcast..
的變量,用於將套接字數據包發送到指定的房間。
問題
每當一個新的用戶訪問應用程序,requestRoom
得到重新填充爲所有用戶,而不是隻爲剛加入的用戶。
是否有辦法爲每個「會話」啓動一個帶有自己變量的新「實例」? 我在這裏錯過了什麼?
不能完全幫助你解決問題,但是這裏提供了一個有用的Node初學者提醒:節點是單處理的,所以你的服務器代碼只能在一個實例中執行,並且所有用戶在技術上將由該實例提供服務。而不是爲每個新用戶創建變量或類,嘗試將這種信息存儲在JSON對象中,如'var Users = {'room1':[23,57,122]'room2':[5,28]} '。對不起,我沒有回答你的問題,但我知道這是我在開始時就有麻煩想法,理解它最終幫助了很多。 –
即時通訊範圍內的每個套接字連接變量,而不是它的工作原理就好 - 單實例部分是什麼讓我感到困惑,所以謝謝 –