

websocketを用いたWebアプリを作成しています。  
現在、JavaScriptからnew
WebSocket("wss://{hostname}")で接続を開始し、onOpenが呼ばれた後は数回、sendメソッドやonmessageイベントハンドラでサーバーとの通信を行えているのですが、無通信状態で無いにもかかわらず、いつも30秒前後でonCloseが発生して接続が切れてしまいます。  
※関係あるかわかりませんが、PCの開発環境でlocalhostのAPサーバーとwebsocketを行う場合はこのような問題は起こりません。  
接続すらできないとか、無通信状態のときのTimeoutが早い、とかであれば、色々と解決策を見たことがあるのですが、私のような状況の場合、どのような原因が考えられるでしょうか。  
（サーバーは、Swift実装のVaporCloudを使っていますが、特定のサーバーによる原因以外でも、何かあれば、教えてください）。  
よろしくお願いします。


CC BY-SA 4.0
2018-08-26T23:28:10.713
47830
2022-07-11T10:03:40.420
29815
question
javascript nginx swift4 websocket
websocketで、数秒ごとに通信を行っているのに30秒ほどで接続がcloseになる


localhostで発現せず、リモートに接続して毎回30秒前後で接続が切れる場合、ネットワーク構成が気になります。

ひょっとしてAPサーバの前段にロードバランサやプロキシが設置されていて30秒で接続を断つ設定になっていませんか？または手元のルータ、端末のファイヤーウォールに同様の設定があるかもです。

それでもダメならAPサーバが原因だと思いますが、VaporのGithubに類似ケースが投稿されていました。  
<https://github.com/vapor/vapor/issues/689#issuecomment-293737926>

対策としては30秒を超えるタイムアウトを指定すれば良いみたいです。  
(2017年の情報ですが）

[code]

    import HTTP
    HTTP.defaultServerTimeout = 60 * 60
    
[/code]


CC BY-SA 4.0
2018-09-27T15:11:00.460
48772
2018-09-27T15:11:00.460
32
47830
answer