2015-10-24 39 views
1

我正在使用NodeJS,socket.io和express來創建應用程序,我想知道如何確定哪個套接字(id /用戶)在哪個路由器上? 例如,我在我的網站上有10個用戶,我有3個路由:/ home,/ about,/ contact。我如何知道哪個用戶在哪個路由器上?節點js多個路由獲取套接字

+0

你是不是也用的東西(如socket.io護照)到EXPRES用戶鏈接s會話與Socket.io?因爲這將自己的主題 – laggingreflex

+0

我目前正在學習如何所有的「在服務器上的JavaScript」(node.js)的作品。我有一個PHP背景,我不太瞭解它。是的,我聽說過passport.js,但我還不知道它是如何工作的。我需要在我的網站上提供註冊/登錄功能,但我還不知道我該怎麼做,什麼是「最佳」做法。 –

+0

結帳更新的答案,希望它有幫助 – laggingreflex

回答

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問題:) –