我正在尝试学习express和socket.io并且无法找到我的问题的答案。我需要引用客户端而不是套接字,因为我有多个页面连接到服务器,所以它创建了不同的套接字,因此我无法跟踪用户。这样做的正确方法是什么?我找不到有意义的解决方案
从本质上讲,我想做的就是能够引用同一个客户端,无论他们在我的服务器上使用哪个页面。但是,如果我有两个单独的代码片段来跟踪用户它无法正常工作
socket.on('set name', function (name) {
console.log("set name My socket id is " + socket.id);
socket.set('username', name);
socket.get('username', function (error, value) {
console.log("set name Socket.username " + value);
});
});
以后
socket.on('getusername', function () {
console.log("getusername My socket id is " + socket.id);
socket.get('username', function (error, value) {
console.log("getusername Socket.username " + value);
});
});
从另一个页面调用第二个代码,我可以选择引用客户端而不是套接字?
答案 0 :(得分:1)
您可以在socket.io中使用房间的概念。
所有同名的插座都可以进入房间。
这样的事情:
socket.on('set name', function (name) {
socket.join(name);
});
以后
socket.on('getusername', function () {
// get all the rooms socket is part of and use the
// first room he is in.
var room = io.sockets.manager.roomClients[socket.id][0];
});
答案 1 :(得分:0)
您可以尝试在客户端上设置浏览器cookie(当用户关闭浏览器时将删除该cookie),并在初始化套接字连接时在消息有效负载中发送其值。