2013-04-09 58 views
9

我在socket.io維基看着使用房間,但加入和離開不工作,我想知道他們是否可能已經改變了一些事情,但沒有機會更新維基?socket.io加入/離開

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

你可能不會宣佈 '插座' 正確要麼你沒有正確安裝的Socket-io的。試試以下...

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

var socket = io.listen(80); 

socket.join('room'); 

socket.leave('room'); 

有一個有用的可執行示例here

+2

這個答案是錯誤的看到波紋答案 – 2016-04-07 15:22:06

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