套接字.IO似乎没有开始,也没有认出IO.配置方法

socket.io doesn't seem to be starting and doesn't recognize io.configure method

本文关键字:IO 配置 方法 开始 套接字      更新时间:2023-09-26

我正在尝试获取socket。使用node/express运行io(我已经做过无数次了,所以我很困惑)。当我尝试配置套接字。使用io.configure方法,我得到一个错误:

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上说的那样做。但我还是把它贴出来,以防万一:

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方法-我已经这样做与其他网站之前,我不明白为什么它现在不工作。谢谢。

我只是在这里读到io.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分配给服务器,当您试图调用io上的函数时,这会导致问题,这些函数可以从socket.io中获得。试着替换这一行:

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

用这行:

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

套接字。io docs列出了几个您可以利用的配置模式,并且可以使用socket.io创建服务器。但是既然已经创建了服务器,就不需要使用socket.io