1. ホーム
  2. javascript

[解決済み] クライアント側で接続の socket.id を取得する方法は?

2022-02-10 04:13:02

質問

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