0

我正在尝试学习 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);
    });
});

从不同页面调用的第二个代码,我有什么选择来引用客户端而不是套接字?

4

2 回答 2

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];
});
于 2013-11-08T04:02:59.177 回答
0

您可以尝试在客户端上设置浏览器cookie(当用户关闭浏览器时将删除的cookie)并在初始化套接字连接时将其值发送到消息有效负载中。

于 2013-11-08T03:47:01.690 回答