2014-01-27 43 views
1

我需要基於基於Node.js + socket.io的用戶實時交互(發送/接收數據)創建基於Web的系統。我已經使用了很多關於Node.js和websockets的資料,但根據我的需求的不同部分,有很多不同的解決方案(使用不同的框架和技術)。使用用戶身份驗證,發送/接收數據創建Node.js + socket.io服務器/客戶端

請推薦一些好的,有效的解決方案來創建這樣的基於Web的系統,用戶可以使用PHP會話驗證自己的身份和一些用戶直接使用Node.js的要求(「MySQL的」)..

如何保持住在用戶身份驗證後使用Node.js + socket.io進行會話,並保持更新的實時結果,即使瀏覽器窗口意外關閉?

如何從一個用戶向另一個用戶發送/接收數據數組或僅更改數據鍵值,並僅將數據從管理員發送到指定用戶組?

請根據您的經驗和類似的基於Web的系統需求提供一些信息和/或鏈接。

在此先感謝您的幫助和耐心。

回答

0

其實你可以建立什麼(我覺得)你描述純粹是如何使用Node.js,Socket.IO,會議插座,Redis的,和passport.js

http://passportjs.org/是在做用戶登錄的優庫Node.JS

http://redis.io/topics/quickstart可以用作會話存儲以及會話套接字。通過使用會話存儲,您可以確保只要會話存儲處於活動狀態,用戶的會話就不會被簡單地關閉瀏覽器窗口而銷燬。您必須殺掉會話存儲,銷燬會話或配置會話存儲以在一段時間後自動銷燬會話

要通過socket.io套接字將消息發送給特定用戶,您可以保存其套接字當他第一次連接。這將是這個樣子

 
var storedSockets = {} 
io.socket.on("connection", function (socket) { 
    storedSockets[socket.id] = socket 
}) 

現在,每當你想連接到特定的插座,可以通過storedSockets訪問它像這樣

 
storedSockets[socket_id_of_required_socket].emit("testing", {}) 

當然,你需要存儲的插座ID某處安全並有可靠的方法來檢索你想要的。例如,如果數據庫中有Users表,則可以將每個用戶套接字標識與其記錄一起存儲。對於羣組,只需找到所有屬於羣組的用戶,然後一個接一個地找回他們的套接字併發送消息

相關問題