无法使用Socket.IO向客户端广播

时间:2013-05-20 22:04:17

标签: javascript html5 node.js socket.io

我的node.js服务器有一个间隔设置,每隔60秒调用一个名为'spawnItem'的函数。调用此函数时,它会执行以下代码:

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

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

TypeError:无法调用undefined

的方法'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坐标处生成一个项目,但是我无法让服务器发送消息。

谢谢!

1 个答案:

答案 0 :(得分: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.