2012-08-30 8 views
21

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

答えて

15

これはプロトコルにはサポートされていませんが、何か自分自身を見せかけてしまう可能性があります。

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

オンラインで検索するときに何かを見逃してしまったのかどうか、ありがとうございました。あなたが提案したアプローチに従います。 – DPD

34

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

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

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

+0

しかし、あなたはどのようにサーバー側のURLを解析するのですか? URL自体はどこで利用可能になっていますか? –

+0

にはおそらく@PathParamのオプションも書かなければならないでしょう... [この回答](https://stackoverflow.com/questions/21559260/how-do-i-pass-a-parameter-to-the-onopen- method-with-jee7-websockets) –

関連する問題