2015-08-19 10 views
7

Jeśli zrobię console.log (gniazdo), otrzymam obiekt gniazda w firebug. W obiekcie mogłem zobaczyć właściwość z id i mogłem zobaczyć wartość identyfikatora. Ale kiedy robię console.log (socket.id), otrzymuję undefined. czemu?dlaczego plik socket.id jest niezdefiniowany w przeglądarce

var socket = io(); 
    $(document).ready(function(){ 
     console.log(socket); 
     console.log(socket.id); 
     console.log(socket.ids); 
     $(".click").on("click", function(e){ 
      alert("clicked") 
      socket.emit("clicked", socket.id) 
      $(this).addClass("removeclick"); 
     }) 
    }); 

ps mogę dostać socket.ids która jest 0, ale nie socket.id.

+0

Kiedy zrobić 'console.log()' w Firebug to działa zgodnie z oczekiwaniami. Czy próbowałeś tego? – slebetman

+0

Spróbuj również zmienić kod na 'console.log (JSON.stringify (socket))' i myślę, że zrozumiesz, co się dzieje. – slebetman

+0

dla 'console.log (JSON.stringify (socket))' Otrzymuję TypeError: wartość obiektu cyklicznego. Czy to właśnie powinienem zobaczyć? –

Odpowiedz

4

Socket.io potrzebuje trochę czasu na nawiązanie połączenia. Najlepszym sposobem znalazłem uzyskać identyfikator na stronie klienta jest:

socket.on('connect',() => {console.log(socket.id)}); 

„połączyć” jest wydarzeniem system, który emitując gdy połączenie jest gotowe.

(moja obecna wersja socket.io jest 1.7.2)

Powiązane problemy