我正在使用NodeJS,socket.io和express來創建應用程序,我想知道如何確定哪個套接字(id /用戶)在哪個路由器上? 例如,我在我的網站上有10個用戶,我有3個路由:/ home,/ about,/ contact。我如何知道哪個用戶在哪個路由器上?節點js多個路由獲取套接字
1
A
回答
1
首先要知道「哪個用戶」本身,您將需要一個帶會話和cookie的系統,以在每次發出不同請求時識別特定用戶。 Passport.JS使這真的很容易。
其次,在Express路由和Socket.io處理程序之間共享同一個用戶需要共享這兩者之間的會話信息。對於Passport.js,有socket.io-passport這樣做。
最後,當客戶端通過Socket.io io.connect()
發起連接請求給服務器它設置請求發送到當前的URL,可以在服務器端與socket.request.headers.referer
與所有被訪問的網址標頭在地方,你將最終能夠告訴用戶哪個是哪個路線:
app.get('/about', function(req, res, next){
// req.user is on '/about' path
});
var URL = require('url');
io.on('connection', function(socket) {
var user = socket.request.user;
var path = URL.parse(socket.request.headers.referer).path;
// user is on -> path
});
+0
我會給你多個upvotes,但我只能一個。 :)感謝您的更新答案!請查看我的其他node.js問題:) –
相關問題
- 1. 節點Js:單個路由器文件中的多個路由
- 2. Android套接字io客戶端節點js不能獲取值
- 3. 節點js中的套接字連接
- 4. 套接字節點js的錯誤
- 5. 如何路由HTML節點js Express js
- 6. 如何將經銷商套接字連接到多個路由器套接字?
- 7. 節點JS讀取TCP套接字特定消息net.createServer
- 8. 定義節點js的模式路由
- 9. 快遞節點JS路由錯誤
- 10. 節點JS路由URL衝突
- 11. 節點js,設置路由的版本
- 12. 節點JS不能得到「/路由器」?
- 13. 節點/套接字IO多玩家
- 14. 節點js網絡庫 - 獲取有關客戶端(套接字)的信息
- 15. 從一個Java套接字讀取字節:獲取ArrayIndexOutOfBounds
- 16. 從套接字讀取一個字節
- 17. 獲取兩個節點之間的所有路由neo4j
- 18. 將值傳遞給節點js模塊以獲得Express路由
- 19. 節點JS中套接字連接的限制
- 20. aurelia中嵌套路由js
- 21. 從路徑獲取節點
- 22. 節點js獲取js的socket.io
- 23. 套接字連接重新路由
- 24. 角節點路由
- 25. 與節點路由
- 26. 節點JS assert.equal多個值
- 27. 節點/表達錨鏈接路由
- 28. 節點JS從多個承諾獲取值
- 29. Solace多節點路由端口
- 30. 在MVC4中路由多個獲取WebApi
你是不是也用的東西(如socket.io護照)到EXPRES用戶鏈接s會話與Socket.io?因爲這將自己的主題 – laggingreflex
我目前正在學習如何所有的「在服務器上的JavaScript」(node.js)的作品。我有一個PHP背景,我不太瞭解它。是的,我聽說過passport.js,但我還不知道它是如何工作的。我需要在我的網站上提供註冊/登錄功能,但我還不知道我該怎麼做,什麼是「最佳」做法。 –
結帳更新的答案,希望它有幫助 – laggingreflex