Express 4.2.0服务器在使用primus时不能在Heroku上工作



服务器在本地运行express和primus时工作良好。然而,我的路线失败时,托管在heroku。如果我把primus封装在我的路由上,它在本地和heroku上都能工作。

var express = require('express'),
    Primus = require('primus'),
    Emitter = require('primus-emitter'),
    compress = require('compression'),
    mongoose = require('mongoose'),
    bodyParser = require('body-parser'),
    List = require('./models/list'),
    app = express(),
    port = process.env.PORT || 3000,
    router = express.Router();
/**
 * Load controllers.
 */
var apiController = require('./controllers/api');
/**
 * API keys.
 */
var secrets = require('./config/secrets');
/**
 * Mongoose configuration.
 */
mongoose.connect(secrets.db);
mongoose.connection.on('error', function() {
    console.error('✗ MongoDB Connection Error. Please make sure MongoDB is running.');
});
app
    .use(compress())
    .use(bodyParser())
    .use('/api', router)
    .use(express.static(__dirname + '/public'));
/**
 * server
 */
var server = require('http').createServer(app),
    primus = new Primus(server, { transformer: 'websockets', parser: 'JSON' });
primus.use('emitter', Emitter);
server.listen(port);
console.log('Server is listening on port ' + port);
primus.on('connection', function (spark) {
    var listsRoute = router.route('/list');
    listsRoute.get(function(req, res) {
        List.find(function(err, obj) {
            if (err) {
                res.send(err);
            }
            primus.send('obj', obj);
            res.json(obj);
        });
    });
});

我使用:

  • 表达4.2.0

  • 博智2.2.1

我忘记将primus在客户端侦听的主机名从localhost更改为我的heroku应用程序url。

最新更新