2014-05-15 26 views
1

我正在編寫一個應用程序,用戶可以一次從多個瀏覽器登錄,並且在頁面加載時建立到服務器上的socket.io連接。如何將php會話數據傳遞給socket.io?

我想跟蹤所有客戶端套接字標識號爲socket.id的redis集,其關鍵看起來像是登錄用戶的userId:???:socketClientIds。我希望SADD套接字客戶端ID在通過ajax調用php腳本後設置爲redis。

由於我將用戶ID保留在一個php會話變量$_SESSION['userId']中,我可以將此用戶ID的值傳遞給socket.io以確保安全/實用方式,因此我可以將該客戶端ID添加到該集合中?

client.sadd("userId:???:socketClientIds", socket.id)

我不能信任的客戶端,爲用戶ID提供準確的價值,因爲它可能是僞造的。

回答

1

如果您在PHP中使用默認會話處理程序,則可以使用groan解析節點中用戶的會話文件。否則,您可能會考慮使用MySQLmemcachedRedis代替您的會話存儲,以便從PHP和節點更容易地訪問它。

+0

節點如何知道要解析哪個會話文件(它不知道用戶ID和phpsessid)?它不知道默認的文件名是'sess_ $ phpsessid'。 – user784637

+1

Socket.IO應該能夠讀取包含PHP會話標識的初始請求發送的cookie。 – mscdex