web-dev-qa-db-ja.com

Heroku-Webプロセスは起動から90秒以内に$ PORTにバインドできませんでした。 TooTallNate Websockets

Webサイトからの接続をリッスンするtootallnatewebsocketsサーバーを使用しています。

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 Logs)

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
10
dyatesdude

これを使用してみてください:

String Host = "0.0.0.0";
int port = System.getenv("PORT");

Herokuでは、0.0.0.0にバインドし、$PORT環境変数に含まれているアプリに割り当てられたポートを使用する必要があります。

クライアントからはポートを指定する必要がないため、wss://Heroku-Name-39329.herokuapp.com/のみを使用する必要があります(5000のポートは使用しないでください)。

12
codefinger

Herokuは、特定のポートを使用することを望んでいます。

これをProcfileに追加して、そのポートを取得します。

-Dserver.port=$PORT

だからあなたはこのようになります:Procfile

web: Java $Java_OPTS -Dserver.port=$PORT -cp target/classes/:target/dependency
12

Herokuには、ポート番号用の独自の環境変数があります。 server.jsファイルでこれを使用します。

// included process.env PORT variable for herokus specific port needed to deploy
const PORT = process.env.PORT || 8000;

したがって、PORTを使用しない場合は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');
    });
1
whiskey 4

パーティーに遅れるかもしれませんが、これはこの問題を解決するのに役立ちました。application-prod.ymlとbootstrap-prod.ymlを変更して、herokuレジストリの場所を反映し、$の後にProcファイルに-Dserver.port = $ PORTを追加します。 Java_OPTS、次に再起動します! :)

0
user3772423