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」を提供します。
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;
...
});
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を提供します。
<script>
var socket = io();
socket.on('connect', function(){
var id = socket.io.engine.id;
alert(id);
})
</script>
最新のsocket.io 2.0のクライアント側ソケットIDを取得するには、以下のコードを使用します
let socket = io();
//on connect Event
socket.on('connect', () => {
//get the id from socket
console.log(socket.id);
});