【发布时间】:2013-12-22 23:44:34
【问题描述】:
将 socket.io 连接到我的路由的最佳方式是什么?
我使用 socket.io 将数据推送到客户端。我有我的索引页面,例如可能有 cmets 进入并被推送给其他客户。简单的。
但是,我希望能够单击用户,然后将页面更改为该用户的页面,然后实时获取该用户的所有 cmets。
必须有比我现在正在做的更好的方法。
我现在……
app.get('/users/:uid', function(req, res){
res.render("user", { user : req.user, id: JSON.stringify(req.params.uid)});
});
然后我只是使用jade来保存变量,以便我可以在另一个javascript文件中使用它
script
var id = !{id};
然后通过 javascript 我让它连接到套接字 IO 并说我正在寻找这个用户。
我使用过会话套接字 io。将此类信息保留在其中似乎也不对。它有时也没有正确保存会话或从一个页面到另一个页面更新它,从而导致问题。我使用的会话存储与我在该项目中使用的会话存储不同,但情况可能会有所不同。现在连接mongo。
做这样的事情最好的方法是什么?我敢肯定我不是第一个问这个问题的人,即使我什么也找不到。
我也在使用 passport.socketIo。
【问题讨论】:
-
无需root发送uid,socket.io已经握手数据:github.com/LearnBoost/socket.io/wiki/Authorizing
-
谢谢!!!不敢相信我从来不知道!
-
console.log("url:" + socket.handshake.url);只是给我: url: /socket.io/1/?t=1387828935995 我是不是搞错了?
-
howtonode.org/socket-io-auth ,获取cookies,然后找到session id,就可以知道用户的一切了。
-
我已经在使用 passport.socketio 来获取所有用户信息。我可以使用 session.socket.io 来存储他们试图在会话中查看的当前页面。这就是我以前做的,但它会产生其他问题并且不能始终如一地工作。我也可以使用 socket.handshake.headers.referer 来获取他们来自的地址,但我仍然需要解析它,这似乎会引入其他问题。还有其他想法吗?
标签: node.js express routes socket.io