Heroku + ExpressJS + socket.io =应用程序错误

时间:2017-08-16 21:56:13

标签: javascript express heroku socket.io

我有一个在Heroku中托管的Web应用程序,使用socket.io进行一些简单的聊天。但是,当我将代码部署到Heroku时,我收到以下错误:

at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=project-interactive-wall.herokuapp.com request_id=e98ea8c9-2cc0-47e5-a9bb-4a0d863ac712 fwd="14.202.200.120" dyno= connect= service= status=503 bytes= protocol=https

这是我在Heroku中的代码:

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

app.get('/', function (req, res) {
    res.sendFile(__dirname + '/client/index.html');
});

io.on('connection', function (socket) {
    console.log('a user connected');

    socket.on('disconnect', function () {
        console.log('user disconnected');
    });

    socket.on('chat message', function (msg) {
        io.emit('chat message', msg);
    });
});

http.listen(3000, function () {
    console.log('listening on *:3000');
});

有什么想法吗? Heroku文档没什么帮助。

1 个答案:

答案 0 :(得分:1)

Heroku设置了一个PORT环境变量,代码中需要该变量来运行服务器。

只需将process.env.PORT添加到http.listen()即可使其正常运行。

http.listen(process.env.PORT || 3000, function() {
  // ...
})