NodeJS Express无法提供'/socket.io/socket.io.js'文件

10

我正在尝试构建 NodeJS/Express/SocketIO 应用程序。

导入:

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

配置:

app.configure(function(){
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.cookieParser('your secret here'));
    app.use(express.session());
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
});

在我的 Jade 模板中:

script(type='text/javascript', href='/socket.io/socket.io.js')

但是当我尝试访问'/socket.io/socket.io.js'时,它不可用

http://localhost:3000/socket.io/socket.io.js

正如它所说:

无法获取/socket.io/socket.io.js

我该如何从安装的模块中提供socket.io.js服务?

谢谢

4个回答

5
您不必复制任何文件,socket.io会负责交付文件。
var express = require('express'),
    app     = new express(),
    server  = require('http').createServer(app),
    io      = require('socket.io').listen(server)

1
我的控制台提示我:“警告: express.createServer()已过时,express应用程序不再继承自http.Server,...”虽然如此,你是对的。正确的过程在https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x中进一步概述。 - Oliver Salzburg

5

您需要将客户端代码从内部Socket.io目录复制到公共目录。在Socket 0.9中,可分发文件的路径为node_modules/socket.io/node_modules/socket.io-client/dist


我本来想回答不同的,但后来意识到我的项目没有使用express。我认为你说得对。 - Fosco
6
这不是一个合适的方法。虽然它可以工作,但是不建议使用。Socket.io已经有一些构造函数可以拦截并在“/socket.io/socket.io.js”处提供请求。上面的代码失败是因为express实例没有传递到socket.io的listen函数中。 - Julian Lannigan
在socket.io 1.2.0中,构建位于node_modues/socket.io/node_modules/socket.io-client/socket.io.js。 - Wilk

2
在 Express 3/4 中,您可以像这样初始化 socket.io:
var io = require("socket.io")(app.listen(80));

-1

出现了错误,请使用

script(type='text/javascript', src='/socket.io/socket.io.js')

替代

script(type='text/javascript', href='/socket.io/socket.io.js')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接