TypeError:对象#<receiver>没有方法&#39; on&#39; </receiver>

时间:2014-11-29 11:49:31

标签: javascript node.js

我试图在节点上执行脚本,并收到此错误: 也许socket.io版本有问题? 代码将鼠标指针发送到服务器,服务器将其发送给客户端。 所有的帮助都是恭维的,谢谢。

pi @ webserver~ / cursores $ sudo node server.js

/home/pi/cursores/node_modules/websocket.io/lib/protocols/hybi-16.js:39
    .on('text', function (packet) {
     ^
TypeError: Object #<Receiver> has no method 'on'
    at new WebSocket (/home/pi/cursores/node_modules/websocket.io/lib/protocols/hybi-16.js:39:6)
    at Server.createClient (/home/pi/cursores/node_modules/websocket.io/lib/server.js:88:10)
    at Server.handleUpgrade (/home/pi/cursores/node_modules/websocket.io/lib/server.js:60:21)
    at HTTPServer.<anonymous> (/home/pi/cursores/node_modules/websocket.io/lib/websocket.io.js:92:8)
    at HTTPServer.emit (events.js:106:17)
    at Socket.socket.ondata (http.js:1990:14)
    at TCP.onread (net.js:527:27)

脚本代码:

var express = require('express');
var wsio = require('websocket.io');
var app = express.createServer();
var ws = wsio.attach(app);
app.use(express.static('public'));
ws.on('connection',function(socket) {
        console.log("Connection detected");
}); 
app.listen(3000);
console.log("Listening on port 3000");

1 个答案:

答案 0 :(得分:0)

处理程序socket.on()中的作用域是在运行时可用而不是脚本时间。 可能是在处理程序中没有看到函数broadcast。 您可能需要在调用它之前声明它。 您可能需要强制它具有全局范围。 也可以看看 http://jondavidjohn.com/javascript-closure-explained-using-events/