我向socket.io迈出了一步。没有req就很难编码,因为我不知道对谁做出回应。
对于这个问题。我的网站有一些博客。博客更新后,我需要告诉'跟踪博客已更新博客的用户。问题是我不知道巫婆跟着用户是否在线,我不知道如何只跟随用户ID向他们发送事件。
有人可以给我一些提示吗?无需任何特定代码。
答案 0 :(得分:2)
您可以致电join
订阅套接字到指定频道:
io.on('connection', function(socket){
socket.join('some room');
});
然后在广播或发布时简单地使用to
:
io.to('some room').emit('some event');
要离开频道,您需要拨打leave
:
io.on('disconnect', function(socket){
socket.leave('some room');
});
答案 1 :(得分:-1)
您可以使用cookie将http请求映射到相应的套接字连接。假设我们正在使用cookie sesson-id
。
在http请求中将此cookie放在客户端上。
在下面的代码补丁中,在创建新的套接字连接之前,将session-id
cookie附加到套接字头。这样您就可以在session-id
事件中访问此.on("connection")
:
var io = require("socket.io");
sio = io.listen(server);
sio.set("authorization", function (data, accept) {
if (data.headers.cookie) {
data.cookie = cookie.parse(data.headers.cookie);
data.headers.sessionID = data.cookie["session-id"];
}
accept(null, true);
});
接下来,存储与其session-id
:
var sockets = {}; // store all socket connections here
sio.sockets.on("connection",connected);
function connected(socket){
var sessionID = socket.handshake.headers.sessionID;
sockets[sessionID] = socket;
}
现在,每当您希望发出与特定http请求相关的套接字事件时:
function dummyReq(req,res){
var session_id = // get cookie from req
//after certain actions
sockets[session_id].emit("dummy-event","dummy-message");
}
在您的情况下,您必须为链接到关注这些博客的用户的所有session-id
发出套接字事件