web-dev-qa-db-ja.com

WebSocket接続が開かれたときにデータを送信することは可能ですか?

JettyWebsocketサーブレットを実装しています。サーバーが新しい接続を受信したときに、websocketのonopen関数によって読み取られるメッセージを送信したいと思います。このメッセージは、通常のconnection.SendMessage()関数を使用せずに、開いているときにのみ送信されるようにします。それは可能ですか?そしてどうやって?

25
DPD

プロトコルではこれをサポートしていませんが、自分で何かをごまかすことができます。

  • サーバーがハンドシェイクを完了したら、クライアントに配信する最初のメッセージを保存します。
  • クライアントのonopen関数で、「初期メッセージの読み取り」要求を送信します。
  • サーバーで、このクライアントが最初のメッセージを読んでいないことを確認します。メッセージで応答します。最初のメッセージが送信されたことを示すフラグを設定します。
  • これで、クライアントとサーバーの両方が他のメッセージを自由に送信できるようになりました。
17
simonc

クエリ文字列を忘れないでください。 WebSocketのURLで有効です。

new Websocket('ws://yoursite.com/path?a=1&b=2&c=3')

次に、サーバー側でこのURLを簡単に解析して、データを取得できます。

46
Lewis