問題タブ [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 に答える
2300 参照

spring - Spring Websocket (JSR-356) の Jetty Websocket クライアントを認証する方法

サーバー側には Spring Websock [STOMP および JSR] があり、サーバーと通信するための Jetty Websocket クライアントがあります。ログイン時にユーザーを認証するため、ブラウザーからの認証は正常に機能します。ブラウザー側には sockjs STOMP がありますが、Jetty websocket クライアントでも認証が必要です。

どうやってするか?他のオプションはありますか?

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

java - java sslSocket を使用して Google と通信するときに応答が得られない

Telnet に似た Java のソケット クラスを使用して単純な Web クライアントを作成しようとしています。ユーザーが任意のポートで任意の Web サーバーと自由に通信できるようにしたい。HTTP/HTTPS 通信のサポートも組み込みたいと思います。HTTP 部分は問題なく動作しましたが、HTTPS で多くの問題が発生しています。

Java の SSLSocket クラスを使用したいと考えています。多くの Web サイトと例を見て、次のコードをまとめて Google のホームページを取得しました。

コードを実行すると、次の出力が表示されます。

この時点で、サーバーからの応答を待っている間にコードがフリーズします。この応答は決して来ません。別のWebサイトで同様のHTTPリクエストを使用して同様のコードを試しましたが、現在心配していない400エラーが返されました. 私の今の目標は、Google に接続してサーバーからの応答を取得することです。私が理解していないのは、サーバーから応答が得られない理由です。

ご協力いただきありがとうございます!私は解決策を探し回りましたが、うまくいきませんでした。

アップデート:

user3586195 が投稿したコードを試してみましたが、うまくいきました! トリックは receive() メソッドにあります。準備ができていることを示すために、ストリームから読み取る必要がありました。みんなの助けに感謝します!

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

java - Websocket 接続を同じエンドポイントに同期する

私のコードには、接続されたクライアントに代わってデータベースに情報を永続化する websocket サーバーがあります。

Jetty 9、Hibernate、および Postgres を使用しています。

基本的に、クライアントが websocket を介してデータ オブジェクトを投稿すると、次のようになります。

  • サーバーはデータを逆シリアル化します
  • コンテンツに基づいて、オブジェクトがデータベースに既に存在するかどうかを確認します
  • 一致が見つかった場合
    • サーバーはデータベースの行を更新し、アイテムが既に存在することを示します
  • そうしないと
    • サーバーは新しいデータベース行を作成し、アイテムが追加されたことを示します。

このシステムでは:

  • エンドポイント (つまり、URL) は、単一のユーザー プリンシパルに対応します。
  • 同じエンドポイントへの複数の接続が許可されます。つまり、異なるクライアントから 1 人のユーザーへの複数の接続を意味します。
  • データベース内のデータ オブジェクトはユーザーに固有です

(これは、サーバーが既存の項目についてユーザーに属する行のみをチェックすることを意味します)

2 つのクライアントがまったく同時に同じデータを投稿する場合を除いて、これはすべてうまく機能しています。どちらのサーバー インスタンスも他方のインスタンスを認識していないため、データベースにはサーバー生成 ID を除いて同じ 2 つの行が作成されます。

サーバーが同じデータを同時に書き込むのを防ぐにはどうすればよいですか? データベースで UNIQUE 制約を使用することはできません。実際には、同じデータを持つ複数の行をサポートする必要がありますが、異なる時間に投稿されるからです。

「session.getOpenSessions()」を使用して、同じエンドポイントに接続されている他のすべてのセッションを取得できます。

できること:

  • どういうわけか、エンドポイントで同期しますか?
  • セッションに接続された何かを同期しますか?
  • スレッド構成で何かをしますか?

提案をありがとう。

0 投票する
2 に答える
1615 参照

java - JAVA: イベント ハンドラーの呼び出しをリッスンする方法/イベント ハンドラーの返された結果を取得する方法は?

私は WebSockets を使用している Android チャット アプリケーションを作成しており、その上にアプリケーション プロトコルのカスタム実装を作成したいと考えています。

私は状況に行き詰まっています。

基本的に、イベント ハンドラー メソッドが別のクラスで呼び出されたことを知り、それに基づいて自分のクラスで独自のメソッドを起動し、クラスでそのイベント ハンドラー メソッドの結果を取得する方法が必要です。

そんなことがあるものか?

私は多くのことを調査し、バインディング、イベントエミッターなどのようなものを見つけました.誰かが私を正しい方向に向けて、このテクニックを学ぶことができる場所からいくつかのリソースを提供できますか?

これは私がこれまでに行ったことです:

別の質問があります。コールバックを使用して userList を取得しました....問題は次のとおりです。

このuserListを別のアクティビティに送信できるように、postExecuteにuserListが必要です。doinbackground() を停止して、コールバックが終了するのを待つにはどうすればよいですか。thread.sleep を使用すると、プロセス全体が停止し、接続も機能しません。

ありがとう