質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Q&A

解決済

2回答

4387閲覧

WebSocketで使用するOnOpen()の引数について

H_K

総合スコア14

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

0グッド

0クリップ

投稿2017/02/14 03:36

###前提・実現したいこと
WebSocketについて、サンプルで勉強中ですが、
OnOpen()の挙動で、理解できない部分があり、質問します。

###該当のソースコード

// サーバ側 @OnOpen public void OnOpen(Session session) { …
// Client側 webSocket = new WebSocket(url); webSocket.onopen = function() { … }

およそどのサンプルでも、上記の形になっていますが、
OnOpen() の Session という引数は、どこで設定されるのでしょうか。
OnOpen() をコールするフレームワーク的な仕組みが WebSocket の仕様にあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

クライアント(ブラウザー)がサーバーに接続するとOnOpenイベントを発生させライブラリ内でSessionオブジェクトを生成して引数に渡します。

例えばAとBのユーザー(ブラウザー)がそれぞれ、サーバーに接続したとします。
まずAが接続したらサーバー側では、1回目のOnOpenイベントを発生させ、Aのセッション情報の入ったSessionを引数に渡します。
次にBが接続すると同様に、今度はOnOpenイベントにBのセッション情報が入ったSessionを引数に渡します。

このように、接続されるユーザーの数分OnOpenイベントが発生し、それぞれのユーザーのセッションオブジェクトが渡されますので、サーバー側はこのSessionからユーザーを識別。

サーバー側のOnMessageなどに渡されるSessionも同様です。

投稿2017/02/14 04:10

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

H_K

2017/02/14 05:11

ご回答、ありがとうございます。 Clientのライブラリ内で引数が設定されるのですね。 Sessionという引数の目的も理解できました。 重ねてお礼申し上げます。
guest

0

仕様説明?

簡単に、
@OnOpenという注釈が付けられたメソッドは、Webソケット・セッションが開かれたときにコールされます。

OnOpen() をコールするフレームワーク的な仕組みが WebSocket の仕様にあるのでしょうか。

そのようですね。
セッションが開かれた際に、そのセッション情報を参照できるように。

投稿2017/02/14 04:26

編集2017/02/14 04:27
liguofeng29

総合スコア801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

H_K

2017/02/14 05:10

ご回答、ありがとうございます。 仕様説明へのリンクも参考になりました。 仕様への理解が深まりました。
H_K

2017/02/14 05:15

4.2.1. @OnOpen を読みました。 仕様理解に対するリファレンスの重要性を認識しました。 重ねてお礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問