Node.js Express 3不提供socket.io.js

时间:2013-06-04 01:44:00

标签: node.js express socket.io

我正在尝试按照此处的说明进行操作

http://socket.io/#how-to-use

但是,我似乎太愚蠢了解为什么我不能在客户端引用socket.io.jss。我在这里看过类似的帖子,但看起来不对:NodeJS Express not serving '/socket.io/socket.io.js'

以下是完整的应用程序列表:

var application_root = __dirname,
    express = require('express'),
    //Web framework
    path = require('path'),
    //Utilities for dealing with file paths
    pg = require('pg'); //Postgres integration

//Create server
var app = express();


// Configure server
app.configure(function () {
    //parses request body and populates request.body
    app.use(express.bodyParser());

    //checks request.body for HTTP method overrides
    app.use(express.methodOverride());

    //perform route lookup based on url and HTTP method
    app.use(app.router);

    //Where to serve static content
    app.use(express.static(path.join(application_root, 'public')));

    //Show all errors in development
    app.use(express.errorHandler({
        dumpExceptions: true,
        showStack: true
    }));
});


//Start server
var port = 4711;
app.listen(port, function () {
    console.log('Express server listening on port %d in %s mode', port, app.settings.env);
});

//Start socket.io
var server = require('http').createServer(app),
    io = require('socket.io').listen(server);

现在,如果我尝试引用客户端js,我会得到404。

<script src="/socket.io/socket.io.js"></script>

任何人都知道为什么Express 3不允许socket.io为其客户端lib服务?

1 个答案:

答案 0 :(得分:4)

我在这里找到了答案

Socket.io is not served in /socket.io/socket.io.js

  

通读http://expressjs.com/api.html#app.listen,请注意如何操作   app.listen已定义。

     

简而言之:将app.listen替换为server.listen。