类型错误:对象 #<接收器> 没有方法“on”

TypeError: Object #<Receiver> has no method 'on'

本文关键字:有方法 on 接收器 对象 错误 类型      更新时间:2023-09-26

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

pi@webserver ~/cursores $ sudo 节点服务器.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");

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