14

Heroku の node.js で socket.io を使用しています。すべてがうまくいくようです。ただし、Chrome 開発バーでは、Unexpected response code: 503. これが何を意味するか知っている人はいますか?私はそれについて心配する必要がありますか?ブラウザのメモリを消費しますか?もしそうなら、私はそれを抑えることができますか?

4

2 に答える 2

26

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 サポートを追加できます。

于 2013-04-03T14:46:54.507 に答える
3

2016年にグーグルから来た人向け。

Heroku Websocket がサポートされるようになりました。オンにする必要はありません。Heroku の WebSocket

Heroku のログを確認してください。Chrome で 503 エラーが発生していることに気付き、ログを確認したところ、Heroku アプリがクラッシュしたことがわかりました。コードにバグがあり、応答しませんでした (socket.io はまったく関係ありません)。

コードを修正すると、503 はなくなりました。

于 2016-03-17T21:39:59.590 に答える