Heroku-Web-процесс не смог привязаться к $PORT в течение 90 секунд после запуска. TooTallNate Websockets
Я использую сервер tootallnate websockets, прослушивающий соединения с веб-сайта.
Как установить соединение с моим сервером на heroku?
мой сайт пытается подключиться по
wss://Heroku-Name-39329.herokuapp.com/
или
wss://Heroku-Name-39329.herokuapp.com:5000/
мой выход журналов heroku.
at=error code=H10 desc="App crashed" method=GET path="/" host=wss://Heroku-Name-39329.herokuapp.com request_id=4afca002-2078-439c-85dc-ad6ef7db50d2 fwd="207.244.77.23" dyno= connect= service= status=503 bytes=
и затем (все еще журналы Heroku)
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
Stopping process with SIGKILL
Process exited with status 137
State changed from starting to crashed
State changed from crashed to starting
Starting process with command `java $JAVA_OPTS -cp target/classes/:target/dependency/* v1.a1.server
мои журналы javascript
WebSocket connection to 'wss://Heroku-Name-39329.herokuapp.com/:5000/' failed: Establishing a tunnel via proxy server failed.
Мои приложения, установленные на сервере являются.
String host = "";
int port = 5000;
Мой Procfile, Для
web: java $JAVA_OPTS -cp target/classes/:target/dependency/* v1.a1.server
3 ответов
попробуйте использовать этот:
String host = "0.0.0.0";
int port = System.getenv("PORT");
на Heroku, вы должны привязать к 0.0.0.0
и используйте порт, назначенный вашему приложению, который содержится в $PORT
переменные среды.
от клиента, вам не нужно будет указать порт, поэтому только wss://Heroku-Name-39329.herokuapp.com/
следует использовать (не тот, с 5000).
Heroku хочет, чтобы вы использовали определенный порт.
добавьте это в свой Procfile, чтобы получить этот порт:
-Dserver.port=$PORT
таким образом, Ваш будет выглядеть так: Procfile, для
web: java $JAVA_OPTS -Dserver.port=$PORT -cp target/classes/:target/dependency
Heroku имеет свою собственную переменную env для своего номера порта. используйте это на сервере.файл js.
// included process.env PORT variable for herokus specific port needed to deploy
const PORT = process.env.PORT || 8000;
поэтому, если не использовать порт, он будет использовать 8000. heroku будет использовать переменную PORT. полный пример файла:
const express = require('express');
const app = express();
const router = express.Router();
app.use(express.static('public'));
router.get('*',function(req, res) {
res.sendFile(path.join(__dirname, './public/index'));
});
included process.env PORT variable for herokus specific port needed to deploy
const PORT = process.env.PORT || 8000;
app.listen(PORT, function(err) {
if (err) {
console.log(err);
return;
}
console.log('listening on port 8000');
});