socket.io 加入/离开
Posted
技术标签:
【中文标题】socket.io 加入/离开【英文标题】:socket.io join/leave 【发布时间】:2013-04-01 08:21:35 【问题描述】:我在 socket.io wiki 上寻找使用房间但加入和离开不起作用,我想知道他们是否可能已经改变了一些东西但没有机会更新 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'
【问题讨论】:
请在此处查看我的答案:***.com/a/66251445/3904109 【参考方案1】:看起来您在客户端有 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);
);
【讨论】:
您能否解释一下setInterval()
函数的作用及其用途?我正在阅读它为every 1 second send a message to all clients (in a room called global?) called roomChanged with the value chicken: tasty
,但我不明白这会实现什么。
是的,它就是这么做的。可能只是为了 ping 客户端
你能否解释一下这有助于从 mysql db 获取数据并在 UI 中显示它?这会避免运行 1 秒的 SetInterval 吗?【参考方案2】:
您可能没有正确声明“套接字”,或者您没有正确安装 Socket-io。试试下面...
var io = require("socket.io");
var socket = io.listen(80);
socket.join('room');
socket.leave('room');
有一个有用的可执行示例here。
【讨论】:
以上是关于socket.io 加入/离开的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flask 和 Socket.io 加入和离开房间的简明示例?