我在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'作为输出。
答案 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);
});