【发布时间】:2019-02-07 16:46:17
【问题描述】:
我正在研究 Socket.io 文档,但仍然无法弄清楚为什么 io.sockets.on 不起作用。我试过使用io.on,但没有成功。
在客户端,我只是监听socket.on(ROUND_START/ROUND_END)的事件
这个客户端监听器正在工作,但是,服务器之一 - io.sockets.on(ROUND_START... - 没有。
服务器
/**
* Handle Game phases
*/
const NEXT_GAME_TIMEOUT = 5000;
const END_GAME_TIMEOUT = 10000;
const FULL_GAME_TIMEOUT = END_GAME_TIMEOUT + NEXT_GAME_TIMEOUT;
const ROUND_START = "ROUND_START";
const ROUND_END = "ROUND_END";
setInterval(() => {
io.sockets.emit(ROUND_START);
}, FULL_GAME_TIMEOUT);
// Not working
io.sockets.on(ROUND_START, () => {
console.log("ROUND STARTED")
setTimeout(() => {
io.sockets.emit(ROUND_END);
}, END_GAME_TIMEOUT)
});
io.sockets.on(ROUND_END, () => {
console.log("ROUND ENDED")
setTimeout(() => {
io.sockets.emit(ROUND_START);
}, NEXT_GAME_TIMEOUT)
});
不从客户端发送与回合开始相关的任何内容的想法是因为回合必须跨套接字同步。
我做错了什么?
【问题讨论】:
-
嘿,我想我误解了你的问题。如果我理解正确,您想捕获从服务器发送到服务器上客户端的事件。您可能想要查看节点事件发射器,然后从该事件将更新发送到客户端。此人可能会解决您的问题stackoverflow.com/questions/26667378/…
标签: javascript sockets socket.io sails.js