socket-io-changes-socket-id-repeated part 2

时间:2015-12-17 12:17:10

标签: node.js socket.io

关于我提出的问题: socket io changes socket.id repeatedly

Registering only happens when the client comes on the chatpage:

在客户端:

       socketConnect: function() {     
       socket =  io.connect('https://socket.mydomain.nl');

       socket.on('connect', function() {
       socket.emit('register', userID, 'Lobby');
       });
       };

服务器

    var UserSockIdStorage = {},
         Allsocketids = [];

      //Clients connect and register here. 

        io.sockets.on('connection', function(socket) {             
        socket.on("register", function(userID, currentchannel, userinfostr) {
        console.log('USER WITH ID ' + userID + ' REGISTERS WITH THE SOCKETIDOF: ' + socket.id); 

        UserSockIdStorage[userID] = socket.id; //userid is associated with the socket ID.
        socket.room = currentchannel;
        socket.join(currentchannel);
      });

正如您所看到的,我将用户名存储在一个以套接字ID作为其值的数组中。 当要发送消息时,将查找用户名以检索套接字ID以将消息发送到。

现在来到我不明白的部分:

客户端不时重新连接(不注册,因此套接字ID不会保存在数组中!!),我可以看到他们获得了另一个套接字ID。

我的猜测是,当我通过用户名(Array UserSockIdStorage)查找用于向其发送消息的套接字ID时,该ID的所有者进行了多次重新连接,从而一次又一次地获取新的套接字ID, 由于客户端同时获得了几个新的套接字ID,所以发送给lookingUp套接字ID的消息不会去任何地方。

但是从我观察到的消息被路由到正确的客户端,所以第一个套接字ID仍然是它的套接字ID?!

这些ID是缓存还是有点?

0 个答案:

没有答案