代码
var express = require('express')
, wsio = require('websocket.io');
/**
* Create express app.
*/
var app = express.createServer();
/**
* Listen
*/
app.listen(3000);
/**
* Attach websocket server.
*/
var ws = wsio.attach(app);
/**
* Serve your code
*/
app.use(express.static('public'));
/**
* Listening on connections
*/
ws.on('connection', function (socket) {
//listen on the message event and send it back
// socket.on('message', function (msg) {
// console.log(' \033[96mgot:\033[39m ' + msg);
// socket.send('pong');
// });
});
我收到此错误
.io\lib\protocols\hybi-16.js:39
.on('text', function (packet) {
^
TypeError: Object #<Receiver> has no method 'on'
at new WebSocket (H:\wamp\www\practices\nodejs\smashing\chapter10-websocket\
node_modules\websocket.io\lib\protocols\hybi-16.js:39:6)
at Server.createClient (H:\wamp\www\practices\nodejs\smashing\chapter10-webs
ocket\node_modules\websocket.io\lib\server.js:88:10)
at Server.handleUpgrade (H:\wamp\www\practices\nodejs\smashing\chapter10-web
socket\node_modules\websocket.io\lib\server.js:60:21)
at HTTPServer.<anonymous> (H:\wamp\www\practices\nodejs\smashing\chapter10-w
ebsocket\node_modules\websocket.io\lib\websocket.io.js:92:8)
at HTTPServer.EventEmitter.emit (events.js:106:17)
at Socket.socket.ondata (http.js:1986:14)
at TCP.onread (net.js:525:27)
最佳答案
您可能使用的是旧版本的express。 createServer
已弃用。并且express >=3.x 不会返回http 服务器。因此可能没有附加 http 服务器,这会引发该错误。
express本身需要附加到http服务器。因此,将库和代码更新为最新标准。请参阅this
关于node.js - websocket.io 正在引发未定义错误的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490215/