【问题标题】:Can't broadcast to clients using Socket.IO无法使用 Socket.IO 向客户端广播
【发布时间】:2013-05-20 22:04:16
【问题描述】:

我的 node.js 服务器有一个间隔设置,每 60 秒调用一次名为“spawnItem”的函数。当这个函数被调用时,它会执行这段代码:

io.sockets.emit("spawn item", {x: 10, y: 10});

每次服务器尝试执行此操作时,它都会立即关闭并显示:

TypeError: 无法调用未定义的方法 'emit'

根据我在网上阅读的所有内容,应该没问题。

var util = require("util"),object inspection, etc),
io = require("socket.io"),
Player = require("./Player").Player;

此代码位于页面顶部,我认为这就是所需的全部内容,还是我错了?我下面还有socket = io.listen(4339)。套接字都配置在下面等等等等。

我也试过这样做:

socket.broadcast.emit("spawn item", bla bla bla);
socket.emit("spawn item", bla bla bla);

我的目标是让服务器告诉客户端每 60 秒在某个 x、y 坐标处生成一个项目,但是我无法让服务器发送消息。

谢谢!

【问题讨论】:

  • 您的来源实际上是否有不匹配的括号,或者只是您帖子中的错字?
  • 是的,这是帖子中的错字。

标签: javascript html node.js socket.io


【解决方案1】:

你没有发布很多信息,但我认为你使用了错误的对象:

var io = require('socket.io');
io.sockets.emit(...); // Fails, wrong object.

相反,您需要使用listen返回的对象:

var io = require('socket.io').listen(4339);
io.sockets.emit(...); // Correct use.

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 2017-12-21
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多