問題タブ [java-websocket]
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.
java - ウェブソケットの実装
TooTallNate の Java-Websocketライブラリを見つけました。Web ソケットが問題を解決するかどうかを確認するために、概念実証としてクライアントとサーバーを実装しようとしています。
私のクライアントは、Ubuntu 12.04 Linux ワークステーションです。4242 でバインドをリッスンする Websocket サーバー アプリケーションを作成しました。次に、クライアントを実行して接続を試みます。Wireshark を使用して通信をキャプチャしました。
私の質問は、なぜパケットがすぐに拒否されるのでしょうか? ファイアウォールを実行しているとは思いませんが、それがファイアウォールである場合、未登録のポートは通常、数ピコ秒以内にシャットダウンする代わりに無視されます。これが何を意味するか知っている人はいますか?
java - WebSocketサーバー接続を1つだけに制限するには?
WebSocket サーバーを作成するために、Java-WebSocketライブラリを使用しました。このように見え、動作しています。
しかし、今はアップグレードしたいので、サーバーはアクティブなクライアント接続を 1 つだけ持つことができます。
これを行うための何らかのオプションはありますか、それともすべての接続をチェックし、最初以外のアクティブな接続をすべて閉じる必要がありますか?
私はこのようにそれを試しました:
ただし、これによりすべての接続が閉じられ、Websocket サーバーが強制終了されます。私は何を間違っていますか?
android - Socket.io Android ライブラリの send メソッド
私は socket.io https://github.com/koush/AndroidAsync#androidasync-also-supports-socketiolibrary lib を使用しようとしており、webSocket.send("a string"); を使用して文字列を送信しようとしています。AsyncHttpClient を使用して新しい Web ソケットを作成します。String コールバックを介して文字列を送信します。しかし、それは機能していませんか?
ReadMe.txt が更新されていないため、正しい使い方を教えてください。
java - ConcurrentHashMap メモリ管理または代替?
ConcurrentHashMap
値としてのjava-websocket WebSocketClientsのメモリが絶え間なく増加しています。
ピアのホワイトリストに毎秒再接続しようとするコードのセクションにそれを分離しました。接続障害の後にエントリが適切に削除されているかどうかをテストしましたが、そうです。また、「concurrenthashmap メモリ リーク」を見つけることができるすべてのものも調べました。
この可能な解決策を実装する方法がわかりません。その解決策は問題を解決しますか? もしそうなら、サンプルコードを提供してください。
この提案を実行しようとしました
成長率が多少遅くなったと思いますが、微調整する方法がわかりません。それは一般的に正しいアプローチですか?もしそうなら、サンプルコードを提供してください。
HashTable
私もここで推奨されているようにaに切り替えてみましたが、ConcurrentModificationExceptions
すぐに取得できるので、それはアウトだと思います。
ConcurrentHashMap
毎秒数千のエントリの挿入と削除が急速に行われる場合、この実装のメモリをどのように管理できますか? できない場合、代替手段はありますか?
コピーではなく参照渡し
HashMap
を格納するを追加しましたnew
WebSocket
。接続は、ConcurrentHashMap
.
これにより、メモリ管理が大幅に改善されましたが、1 秒あたり約 5 回の試行で、約 5 秒あたり約 0.1 MB のリークがまだ少しあります。
これは私のコード、WebSocket
の「デストラクタ」、またはConcurrentHashMap
の削除された値の管理に問題がありますか?
死んだObject
?
remove()
前にからConcurrentHashMap
を呼び出しclose()
、WebSocketClient
最後にから を呼び出したため、成長率は再び大幅に低下remove()
しましたHashMap
。
WebSocketClient
閉じられて両方のマップから削除された後、どのように、そしてなぜまだ残っているのでしょうか?
System.gc();
漏れ率が大幅に減少しました!
の後に呼びますremove()
。
java - Java websockets の System.out.println
Java websockets の System.out.println が機能していません。
私の目的は、最初に「ようこそ」を送信してからチャットを開始する必要があるユーザー接続です。
これは tomcat7 websockets チャットの例です:
しかし、ユーザーに「ようこそ」を印刷していません。
助けて。
playframework - サーバーの WebSocket 接続ステータス
WebSocket 接続を処理するために Play Framework 2.2.1 を使用しています。
一般に、次の onClose 関数は、(close 関数を呼び出して) クライアントによって意図的に接続が閉じられた場合、またはクライアントがクラッシュした場合などの不要なイベントによって接続が閉じられた場合に呼び出されます。
ここでの問題は、不要なイベントが発生した場合に onClose コールバックが呼び出されないことがあります。サーバーの観点からは、クライアントはまだ接続されているように見えます。この問題を処理する最善の方法は何ですか? クライアントがオンラインであることを確認するために毎秒のようにクライアントにpingを送信する必要がありますか、それともクライアントからサーバーへのpingを実行する必要がありますか?