Heroku の node.js で socket.io を使用しています。すべてがうまくいくようです。ただし、Chrome 開発バーでは、Unexpected response code: 503
. これが何を意味するか知っている人はいますか?私はそれについて心配する必要がありますか?ブラウザのメモリを消費しますか?もしそうなら、私はそれを抑えることができますか?
2 に答える
Heroku は、Cedar スタックでの websocket をまだ「サポートしていません」(いつサポートするかについては言及されていません)更新: 以下を参照してください。 次のコードを Socket.io 実装に追加することをお勧めします。
// assuming io is the Socket.IO server object
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
これは、Heroku が dyno の上にルーティング レイヤーを追加するためです。コードはサーバー上で実行されますが、どのサーバーになるかは決定論的ではありません。したがって、WebSocket は「正しい」サーバーにデータを送信できません。Socket.IO はロング ポーリングにダウングレードされます。これにより、ルーティング レイヤーを介して接続が維持され、イベントが正しいサーバーで実行されることが保証されます。
更新: Heroku WebSocketsはパブリック ベータ版になりました! heroku labs:enable websockets -a myapp
アプリ ディレクトリで実行することにより、アプリに WS サポートを追加できます。
2016年にグーグルから来た人向け。
Heroku Websocket がサポートされるようになりました。オンにする必要はありません。Heroku の WebSocket
Heroku のログを確認してください。Chrome で 503 エラーが発生していることに気付き、ログを確認したところ、Heroku アプリがクラッシュしたことがわかりました。コードにバグがあり、応答しませんでした (socket.io はまったく関係ありません)。
コードを修正すると、503 はなくなりました。