どのような手法を使っても、Node.jsサーバーを再起動するときにwebsocketを接続したままにすることはできますか?Node.jsサーバーに接続されているWebソケットを再起動することはできますか?
3
A
答えて
6
いいえ、直接ではありません。設計上、OSはプロセスがシャットダウンしたときにプロセスが所有するすべてのリソースをクリーンアップします。これは、OSがプロセスの起動と停止に伴ってリソースのリークを防ぐ方法です。したがって、サーバープロセスがシャットダウンすると、開いているソケットはすべてOSによってシャットダウンされます。
通常の設計ソリューションは、クライアントが接続を失うつもりがないときにwebSocket接続が失われた場合に自動的に再接続するコードを作成することです。このタイプの自動再接続の振る舞いは、この正確な理由からsocket.io(webSocketの上にあるレイヤー)に組み込まれています。
クライアントがプロキシに接続してからプロキシがサーバーに接続するようにプロキシをサーバーの前に挿入すると、サーバーに自動的に再接続するようにプロキシを教えることができます(サーバがダウンしている間にメッセージを送信しようとしなかった限り)クライアントが何も起こっていないことを知らないようにします。もちろん、プロキシの再起動の問題も同じです。
一部のオペレーティングシステムでは、同じホスト上の1つのプロセスから別のプロセスにTCPソケットの所有権を移すことができます。だから、私はあなたが一時的なプロセスを起動し、サーバーからこの一時的なプロセスにすべてのwebSocketソケットを転送してから、サーバーを再起動し、新しいサーバーインスタンスが起動した後に、ソケットを戻してから一時的なプロセスを終了します。
webSocketが誤って切断される理由は複数あるため、クライアント側の再接続は、サーバーの再起動と、システムで発生する可能性があり、すでに書かれている。
関連する問題
- 1. WebアプリケーションからJavaソケット接続が開始され、サーバーが再起動すると再び開きます
- 2. LDAPサーバーを再起動したときに再接続する方法は?
- 3. gRPCはサーバー再起動時に接続を失います
- 4. Wampサーバーに接続されたC++プロセスの自動再起動
- 5. クライアントが切断して再度接続すると、ソケットIDが再発行されますか?サーバーはSocket.ioとnode.jsにありますか?
- 6. ASP.NET Webアプリケーション/サーバーから接続されたクライアントコンピュータへの永続的なTCP/IPソケット接続を作成することはできますか?
- 7. ソケットは再接続イベントで再利用されますか?
- 8. ソケットを閉じずにリアルタイムのnode.jsサーバーを再起動しますか?
- 9. JMS接続を失うことなくサーバーを再起動
- 10. Azure Webアプリケーションの再起動後にSignalRが再接続する
- 11. プロセスを再起動せずにAzure WebロールでIISを再起動することはできますか?
- 12. flash xmlソケットはnode.js websocketに接続できますか?
- 13. サーバーを再起動した場合、クライアントソケットをサーバーに再接続する方法
- 14. ソケットを使ってnode.jsとadaを接続するには?
- 15. 再起動後に再接続でnodeJSが攻撃される
- 16. DaphneサーバーがHTTPS上のWebソケットに接続できません
- 17. データをWebサーバーにストリーミングするにはソケット接続が必要ですか?
- 18. Androidソケットがサーバーに接続されていません
- 19. node.jsサーバーに接続できません
- 20. 連続ビルドモードでランニングアプリを再起動することはできますか?
- 21. ブルートゥースデバイスが接続されているときにアプリケーションを起動する
- 22. 再起動のたびにApache Webサーバーを起動する
- 23. 閉じられていないソケット接続に再接続するC#
- 24. 2つのサーバーをノードWebソケット経由で接続する
- 25. ソケットio。ソケットのIDで識別される部屋に自動接続することを無効にする
- 26. Node.jsからMongoDBを起動して接続する
- 27. アンドロイドでアプリを再起動したときに再接続する方法
- 28. ノードサーバーの再起動中にデータベースサーバー接続を保存することはできますか?
- 29. ソケットが接続されているすべての部屋をNode.jsに移動する方法
私はすでに再接続コードを追加していますが、ユーザーは良い経験を得ることができません。 また、クライアントの再接続が始まると、サーバのCPU使用率と帯域幅が増加します。 – Chintan
@Chintan - クライアントの再接続でクライアントの経験が悪化する理由は不明です。サーバーが少しダウンしてしまい、再起動時にすべてのクライアントが基本的にオフラインになります。再起動時に複数のサーバーを使用し始める場合と、他のサーバーがオンラインになっている場合を除き、それについては何もできません。はい、サーバーCPUをもう一度接続するともう少し時間がかかりますが、それは非常に短い期間で、通常の状態に戻ってください。 – jfriend00