22

ルームの使用を調べている socket.io wiki に参加していますが、参加と退出が機能していません。

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' 
4

2 に答える 2

65

クライアント側に 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);
});
于 2013-10-19T08:04:08.827 に答える
30

おそらく「socket」を正しく宣言していないか、Socket-io を正しくインストールしていない可能性があります。次のことを試してください...

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

var socket = io.listen(80);

socket.join('room');

socket.leave('room');

ここに便利な実行例があります。

于 2013-04-09T18:38:14.673 に答える