从 socket.io 0.9.x 迁移到 1.4.x - 无法让 socket.io 开始

Migrating from socket.io 0.9.x to 1.4.x - can't get socket.io to start

我正在更新旧应用程序以使用 socket.io 1.4 而不是 0.9(并表示 4 而不是 3),但我无法让 socket.io 启动。在我的旧应用程序中,我将设置如下:

var socket = require('socket.io');
var express = require('express');
var http = require('http');

var app = express();
var server = http.createServer(app);

var io = socket.listen(server);
server.listen(8080);

根据 1.x 文档,我认为这应该有效:

var express = require('express');
var http = require('http');

var app = express();
var server = http.createServer(app);

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

我不知道我错过了什么。尝试添加 io.listen(server) 以防通过服务器还不够,但这也没有效果。我不认为这是错误的语法......但我显然缺少一些步骤来让它像以前一样工作。

我会尽量在此处提供有用的答案,这样您就可以结束问题了。

您的第二个代码块与 socket.io 文档中显示的此组合完全一致。唯一的区别是它们使用 .Server() 构造函数而您使用 .createServer() 方法(如果您查看代码)做同样的事情:

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

所以,我不认为这是问题所在。要检查的一些事项:

  1. 节点控制台中是否显示任何启动错误?
  2. 你怎么知道socket.io没有启动? post 1.0 世界中的一个区别是 socket.io 服务器代码在启动时不会像在 0.9x 世界中那样向控制台输出任何内容。这让很多人感到困惑。
  3. 如果还有问题,请出示相应的客户端代码。

编辑:正如 OP 在调查我询问的其他一些事情时在评论中发现的那样,socket.io 服务器启动得很好 - OP 只是希望看到一些控制台输出,这些输出在1.x版本。