2013-04-09 9 views
9

私はsocket.io wikiを使って部屋を探していますが、参加したり辞めたりするのはうまくいきません。何か変わったかもしれないが、更新する機会がないのだろうか? wiki?socket.io join/leave

socket.join("room-"+data.meid); 
socket.leave("room-"+meid); 

原因イムコンソールエラーを取得:

Uncaught TypeError: Object #<SocketNamespace> has no method 'leave' 
Uncaught TypeError: Object #<SocketNamespace> has no method 'join' 

答えて

11

あなたはおそらく正しく「ソケット」を宣言していないのいずれか、あなたのことを正しくソケット-IOインストールしていません。以下を試してみてください...

var io = require("socket.io"); 

var socket = io.listen(80); 

socket.join('room'); 

socket.leave('room'); 

有用な実行可能な例hereがあります。

+2

この回答は怒鳴るの回答を参照してください間違っています –

39

クライアント側でsocket.joinがあったようです。そのサーバー側の機能。

サーバー上でこれを置く:クライアント上

io.sockets.on('connection', function (socket) { 

    socket.on('subscribe', function(data) { socket.join(data.room); }) 

    socket.on('unsubscribe', function(data) { socket.leave(data.room); }) 

}); 

setInterval(function(){ 
    io.sockets.in('global').emit('roomChanged', { chicken: 'tasty' }); 
}, 1000); 

そして、これを:

var socket = io.connect(); 

socket.emit("subscribe", { room: "global" }); 

socket.on("roomChanged", function(data) { 
    console.log("roomChanged", data); 
});