web-dev-qa-db-ja.com

クライアント側の接続のsocket.idを取得する方法は?

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」を提供します。

9
Black Heart

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;
  ...
});
17

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...
 }
8
Sandeep Joel

次のコードは、クライアント側でsocket.idを提供します。

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

最新のsocket.io 2.0のクライアント側ソケットIDを取得するには、以下のコードを使用します

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