非特定Heroku部署错误(Node.js,socket.io)
问题描述:
我的意图是在Heroku上部署一个简单的Web应用程序。 我曾经在本地托管这个应用程序,但现在我正在使用Heroku获得它的在线。非特定Heroku部署错误(Node.js,socket.io)
打开应用程序时,它只是说:“应用程序发生错误,您的页面无法提供。”
没有错误编号或没有暗示为什么应用程序不能正常工作,这里是所有相关代码:
客户端代码:
var socket;
socket = io.connect("https://fakename.herokuapp.com");
服务器端节点.js代码:
var express = require('express');
var Victor = require('victor');
var app = express();
var server = app.listen(process.env.PORT || 3000, listen);
function listen() {
var host = server.address().address;
var port = server.address().port;
console.log("server is up");
}
app.use(express.static('public'));
var io = require('socket.io')(server);
当然包括procfile和package.json。
答
我认为当你新建一个socket.io实例时,你传递了错误的实例。请尝试此操作
const app = express();
const http = require('http').Server(app);
const io = socket(http);
...
io.on("connection", socket=>()=>{...});
http.listen(process.env.PORT || 3000);
它来自官方文档https://socket.io/docs/,我用于当前项目。 另外,实际上我还没有尝试在heroku实例中运行web套接字服务。然而,heroku基本上为客户提供了自动扩展服务。这意味着您的应用可以通过一些负载平衡在多个服务器上运行。这可能会导致websocket无法正常工作。在这种情况下,通常鼓励做的是实施粘性会话。请尝试我上面张贴的代码,并请让我知道,如果它也不起作用。
+0
nope,没有任何改变。不起作用。 – Canatron
键入“heroku日志”,它将注销在您的heroku应用程序实例中引发的错误消息。 – supergentle
对不起,我没有提到这一点,但在构建日志中没有任何错误,唯一接近错误的是NPM_CONFIG_LOGLEVEL = error – Canatron