問題タブ [signaling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - パイプライン コンポーネントとしての exec
コンテナー内で実行されているアプリケーションの場合、コンテナーが (正常に) シャットダウンされているときに SIGTERM を受け取ることが望ましいです。同時に、出力をログ ファイルに出力したいと考えています。
したがって、docker コンテナーの startscript では、exec
これに似たbash を使用していました。
これは問題なく機能しcommand
、コンテナーのルート プロセスであり、SIGTERM を受け取るシェルを置き換えました。
アプリケーションは多くのログを記録する傾向があるため、Apache のrotatelogs
ツールを使用してログ ローテーションを追加することにしました。
command
残念ながら、パイプを使用することで、execはシェルを置き換えることができなくなったようです。実行中のコンテナー内のプロセスを で見るとpstree -p
、次のようになります。
そのため、bash はルート プロセスのままであり、コマンドに SIGTERM を渡しません。exec に出くわす前に、シグナル ハンドラーを bash スクリプトにインストールする方法を見つけましcommand
たkill
。ただし、これは非常に複雑になり、PID の取得も必ずしも簡単ではありませんでした。シグナル処理に関しては exec の利便性を維持し、ログ ローテーションのパイプを取得したいと考えています。これを達成する方法はありますか?
spring-boot - ソケット メッセージごとにデータベース呼び出しを管理する Spring Boot
Spring Boot アプリケーションの Web ソケット サーバーを WEBRTC シグナリング サーバーとして稼働させています。
このサーバーは、さまざまなクライアント ソケットを介して、サーバーとの間でローテーションされるメッセージに基づいて、データベースにデータを記録する必要があります。
2 つ以上のピアを使用してクライアント側から電話会議を試行し、ブレークポイントを使用してデバッガーとしてシグナリングを実行している間、シナリオは正常に完了し、データベースは期待どおりに更新され、電話会議が行われました。
しかし、デバッグとブレークポイントなしでサーバーを実行すると、SQL エラーが発生します。
私は Spring JPA を使用しており、呼び出しフローのデータを保持するために、エンティティ データとそのすべてのネストされたリストとリレーショナル エンティティ オブジェクトを入力した後、Web ソケットが受信したすべてのメッセージで保存機能を呼び出しています。
エラーは、データベース上でランダムな順序で同時に実行されているクエリが原因であると思いますが、データはデータベース内にまだ存在していません。
デバッグ モードと同様に、あるブレークポイントから別のブレークポイントに移動するのに時間がかかります。これにより、データの永続性が保証されます。
しかし、私は問題について完全には確信が持てません。
同時データベース呼び出しと更新を適用し、同時 Web ソケット関連メッセージのデータベースでデータが適切に保存および永続化されることを確認する最適な方法はありますか?
firebase - さまざまなデバイスでの WebRTC (1 つのブラウザーでのみ動作)
修正方法がわからない WebRTC に関する奇妙な問題があります。回答とオファー、およびICE候補を収集するためにfirebaseを使用してWebRTC webglゲームを作成しています。私はGoogleスタンサーバーと独自のターンサーバーを使用しています。異なるブラウザーのいくつかのタブでゲームのいくつかのインスタンスを実行して自分のコンピューターでテストすると、接続は通常問題なく動作します。コンピューターとラップトップでゲームを実行してテストすると、Firefox ブラウザーでゲームが相互に接続されます。ただし、他のブラウザー (Chrome および Edge) で起動すると、ゲームが接続されません。ICE 候補のスワップ、setRemoteDescription の実行、そして... それだけです。接続なし、データチャネルの作成なし。
このトピックで数日を失いました。以前のFirefoxでは動作しませんでした。ターンサーバーは異なるデバイスからの接続の問題を完全に解決すると思っていましたが、1つのブラウザーしか解決しませんでした。どうなり得るか?