1

代码

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)
4

1 回答 1

0

您可能使用的是旧版本的 express。createServer已弃用。并且 express >=3.x 不返回 http 服务器。因此,可能没有附加 http 服务器,这会引发该错误。

express 本身需要附加到 http 服务器。因此,将库和代码更新为最新标准。看到这个

于 2014-05-06T10:49:24.517 回答