web-dev-qa-db-fra.com

comment obtenir socket.id d'une connexion côté client?

J'utilise le code suivant dans index.js

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

le code ci-dessus me permet d'imprimer le socket.id dans la console.

Mais quand j'essaye d'imprimer le socket.id côté client en utilisant le code suivant

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

il donne 'null' en sortie dans le navigateur.

4
Black Heart

Vous devez attendre l'événement connect avant d'accéder au champ id:

Avec ce paramètre, vous accéderez au sessionID

socket.id

Editer avec:

Côté client:

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

Du côté serveur:

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

Le code suivant donne socket.id côté client.

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

Pour les utilisateurs de Socket 2.0.4  

Côté client

 let socket = io.connect('http://localhost:<portNumber>'); 
 console.log(socket.id); // undefined
 socket.on('connect', () => {
    console.log(socket.id); // an alphanumeric id...
 });

Du côté serveur

 const io = require('socket.io')().listen(portNumber);
 io.on('connection', function(socket){
    console.log(socket.id); // same respective alphanumeric id...
 }
1
Sandeep Joel

Pour obtenir l'ID de socket côté client pour Latest socket.io 2.0, utilisez le code ci-dessous

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