Node.js NodeJS Express不提供'/socket.io/socket.io.js';

Node.js NodeJS Express不提供'/socket.io/socket.io.js';,node.js,express,socket.io,Node.js,Express,Socket.io,我正在尝试构建NodeJS/Express/SocketIO应用程序 进口: var express = require('express') , app = express() , server = require('http').createServer(app) , io = require('socket.io').listen(server)... 配置: app.configure(fu

我正在尝试构建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')));
});
在我的翡翠模板中:

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


谢谢

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

您不必复制任何文件,Socket.io将负责文件的传递

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

出现错误,请使用

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

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

在Express 3/4中,您可以像这样初始化socket.io:

var io = require("socket.io")(app.listen(80));

我本来打算换一种方式回答,但后来意识到我的项目不使用express。我想你是对的。这不是一个合适的方法。虽然有效,但这是不可取的。Socket.io已经在
/Socket.io/Socket.io.js
上安装了用于拦截和服务请求的结构。上面的代码失败,因为未将
express
实例传递到socket.io的
listen
函数中。在socket.io 1.2.0中,构建位于node_modues/socket.io/node_modules/socket.io-client/socket.io.jsi控制台告诉我
警告:express.createServer()已弃用,express应用程序不再从http.Server继承,…
不过你是对的。正确的流程将在中进一步概述