【问题标题】:how to get socket.id of a connection on client side?如何在客户端获取连接的socket.id?
【发布时间】:2017-10-31 09:37:07
【问题描述】:

我在 index.js 中使用以下代码

io.on('connection', function(socket){
console.log('a user connected');
console.log(socket.id);
});

上面的代码让我在控制台打印socket.id。

但是当我尝试使用以下代码在客户端打印 socket.id 时

<script>
var socket = io();
var id = socket.io.engine.id;
document.write(id);
</script>

它在浏览器中给出“null”作为输出。

【问题讨论】:

  • docs 对获取套接字 id 有什么看法?你有没有尝试过别的?
  • 非常感谢@Mr.Meeseeks 在文档上找到它。 socket.id 可以在 'connect' 事件后获取。
  • 注意,服务器上的socket.id是不提供给客户端的,所以如果你想要服务器的id,你可以自己在消息中发送给客户端。跨度>

标签: javascript node.js socket.io


【解决方案1】:

在访问id 字段之前,您应该等待事件connect

使用此参数,您将访问 sessionID

socket.id

编辑:

客户端:

var socketConnection = io.connect();
socketConnection.on('connect', function() {
  const sessionID = socketConnection.socket.sessionid; //
  ...
});

服务器端:

io.sockets.on('connect', function(socket) {
  const sessionID = socket.id;
  ...
});

【讨论】:

  • 嗨,这个 id 在连接套接字时变得不同
  • 我明白了,这是您的会话 ID,每次连接都会得到一个不同的 ID
  • 是的,每次连接套接字时,我们都会得到不同的会话。这意味着这是会话ID。现在,如何获取套接字ID?对于特定设备,哪些将保持不变?
  • 这是另一个问题,您可能会创建一个新问题,指定您面临的问题和您尝试过的代码,我可能会加入并尝试帮助确定:)
【解决方案2】:

对于 Socket 2.0.4 用户

客户端

 let socket = io.connect('http://localhost:<portNumber>'); 
 console.log(socket.id); // undefined
 socket.on('connect', () => {
    console.log(socket.id); // an alphanumeric id...
 });

服务器端

 const io = require('socket.io')().listen(portNumber);
 io.on('connection', function(socket){
    console.log(socket.id); // same respective alphanumeric id...
 }

【讨论】:

  • 重连后socket.id还是一样吗?在 socket.io 2.x.x
  • 没有。它不会是一样的。你需要重新找到它。
【解决方案3】:

以下代码在客户端给出socket.id。

<script>
  var socket = io();
  socket.on('connect', function(){
var id = socket.io.engine.id;
  alert(id);
})
</script>

【讨论】:

    【解决方案4】:

    要获取最新 socket.io 2.0 的客户端套接字 ID,请使用以下代码

     let socket = io(); 
     //on connect Event 
     socket.on('connect', () => {
         //get the id from socket
         console.log(socket.id);
     });
    

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 2021-07-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2014-01-21
      • 2012-04-03
      相关资源
      最近更新 更多