如何获取客户端连接的socket.id?

时间:2017-05-30 19:17:24

标签: javascript node.js socket.io

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

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

上面的代码让我在console中打印socket.id。

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

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

它在浏览器中输出'null'作为输出。

4 个答案:

答案 0 :(得分:14)

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

使用此参数,您将访问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;
  ...
});

答案 1 :(得分:4)

以下代码在客户端提供了socket.id。

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

答案 2 :(得分: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...
 }

答案 3 :(得分:0)

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

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