2017-05-30 172 views
3

即時通訊使用下面的代碼在index.js如何獲取客戶端連接的socket.id?

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

上面的代碼讓我打印socket.id控制檯。

但是當我嘗試使用下面的代碼

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

它給「空」在瀏覽器中輸出打印客戶端上的socket.id。

+1

什麼做** [文檔](HTTPS ://插座.io/docs/client-api /#socket)**說說獲取套接字ID?你有嘗試過別的嗎? –

+1

非常感謝你@Meeseeks先生在文檔上找到它。 socket.id可以在'connect'事件後獲得。 –

+0

請注意,服務器上的'socket.id'沒有提供給客戶端,所以如果你想從服務器獲取id,那麼你可以在消息中自己發送它給客戶端。 – jfriend00

回答

8

你應該等待事件connect訪問id前場:

使用此參數,您將訪問的SessionID

socket.id 

編輯有:

客戶端:

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

服務器端:

io.sockets.on('connect', function(socket) { 
    var sessionid = socket.id; 
    ... 
}); 
1

下面的代碼提供了在客戶端socket.id。

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

對於插座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... 
}