socket.io似乎没有启动,也没有认识到io.configure方法

时间:2014-05-31 04:16:35

标签: javascript node.js sockets socket.io uncaught-typeerror

我正在尝试使用node / express运行socket.io(我已经做了无数次 - 所以我非常困惑)。当我尝试使用io.configure方法配置socket.io时出现错误:

io.configure(function() {
   ^
TypeError: Object #<Server> has no method 'configure'
    at Object.<anonymous> (/home/yz/webdev/ground/app.js:377:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

我的代码正如它在socket.io上所说的那样 - 但我会发布它以防万一:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

server.listen(8000);

//other declarations
app.use(...
passport.use(...

//some routes
app.get(...
app.post(...

io.configure(function() {
  io.set('transports', ['websocket','xhr-polling','flashsocket']);
  io.set('flash policy port', 10843);
});

io.sockets.on('connection', function (socket) {

  socket.on('message', function (data) {
    ...
  });
});

错误在io.configure方法引发 - 我之前已经与其他网站一起做过,我不明白它现在不能正常工作。感谢。

更新

我只是在阅读hereio.configure不再存在 - 但是,我似乎无法让它以新的方式运作。这是我的新代码:

var express = require('express');
var app = express();
var server = require('http').createServer(app);
//var io = require('socket.io').listen(server);
var socket = require('socket.io')({
  'transports': ['websocket','xhr-polling','flashsocket'],
  'flash policy port': 10843
});

var io = socket.listen(server);

io.sockets.on('connection', function (socket) {

  socket.on('message', function (data) {
     ...
  });
});

我没有收到任何错误,socket.io似乎没有出现。

1 个答案:

答案 0 :(得分:0)

您正在为服务器分配io,当您尝试调用io上可用的socket.io上的功能时,这会导致问题。尝试替换此行:

var io = require('socket.io').listen(server);

这一行:

var io = require('socket.io')(server);

socket.io docs列出了您可以利用的几种配置模式,并且可以使用socket.io创建服务器。但是,由于您已经在创建服务器,因此您不需要使用socket.io