問題タブ [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.

0 投票する
1 に答える
195 参照

java - ウェブソケットの実装

TooTallNate の Java-Websocketライブラリを見つけました。Web ソケットが問題を解決するかどうかを確認するために、概念実証としてクライアントとサーバーを実装しようとしています。

私のクライアントは、Ubuntu 12.04 Linux ワークステーションです。4242 でバインドをリッスンする Websocket サーバー アプリケーションを作成しました。次に、クライアントを実行して接続を試みます。Wireshark を使用して通信をキャプチャしました。

私の質問は、なぜパケットがすぐに拒否されるのでしょうか? ファイアウォールを実行しているとは思いませんが、それがファイアウォールである場合、未登録のポートは通常、数ピコ秒以内にシャットダウンする代わりに無視されます。これが何を意味するか知っている人はいますか?

0 投票する
1 に答える
1423 参照

java - WebSocketサーバー接続を1つだけに制限するには?

WebSocket サーバーを作成するために、Java-WebSocketライブラリを使用しました。このように見え、動作しています。

しかし、今はアップグレードしたいので、サーバーはアクティブなクライアント接続を 1 つだけ持つことができます。
これを行うための何らかのオプションはありますか、それともすべての接続をチェックし、最初以外のアクティブな接続をすべて閉じる必要がありますか?

私はこのようにそれを試しました:

ただし、これによりすべての接続が閉じられ、Websocket サーバーが強制終了されます。私は何を間違っていますか?

0 投票する
1 に答える
1732 参照

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 が更新されていないため、正しい使い方を教えてください。

0 投票する
1 に答える
4105 参照

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()

0 投票する
1 に答える
267 参照

java - Java websockets の System.out.println

Java websockets の System.out.println が機能していません。

私の目的は、最初に「ようこそ」を送信してからチャットを開始する必要があるユーザー接続です。

これは tomcat7 websockets チャットの例です:

しかし、ユーザーに「ようこそ」を印刷していません。

助けて。

0 投票する
1 に答える
1577 参照

playframework - サーバーの WebSocket 接続ステータス

WebSocket 接続を処理するために Play Framework 2.2.1 を使用しています。

一般に、次の onClose 関数は、(close 関数を呼び出して) クライアントによって意図的に接続が閉じられた場合、またはクライアントがクラッシュした場合などの不要なイベントによって接続が閉じられた場合に呼び出されます。

ここでの問題は、不要なイベントが発生した場合に onClose コールバックが呼び出されないことがあります。サーバーの観点からは、クライアントはまだ接続されているように見えます。この問題を処理する最善の方法は何ですか? クライアントがオンラインであることを確認するために毎秒のようにクライアントにpingを送信する必要がありますか、それともクライアントからサーバーへのpingを実行する必要がありますか?