2016年7月21日木曜日

SignalRと接続イベント(クライアント)

SignalRでは、クライアント側の接続の状況に応じて、いくつかのコールバックメソッドが呼び出される。
JavaScript上でコールバックメソッドを定義しておけば、接続の状況変化に応じた処理を記載することができる。

  • クライアント側の接続状況に応じて呼び出されるコールバック一覧

メソッド名
いつ呼び出されるか?
starting
接続開始時
received
データ受信時
connectionSlow
接続が遅くなった/不安定になった時
reconnecting
再接続し始めたとき
reconnected
再接続できたとき
disconnected
切断したとき
stateChanged
接続状況が変化したとき

実装追加内容

前の投稿ページで作成したコードのView側に、以下のようなコードを追加すると、接続状況の変化を確認できるので、お試しいただきたい。

// 接続ライフサイクル確認
var connection = $.connection.hub;
connection.starting(function () { console.log("starting"); });
connection.received(function () { console.log("received"); });
connection.connectionSlow(function () { console.log("connectionSlow"); });
connection.reconnecting(function () { console.log("reconnecting"); });
connection.reconnected(function () { console.log("reconnected"); });
connection.disconnected(function () { console.log("disconnected"); });
connection.stateChanged(function (data) { console.log("old:" + data.oldState + ", new:" + data.newState); })

データ受信時の”received”イベントが、通知などをしたいときに便利なように思えた。
※console.logの出力内容は、大体のブラウザでは、F12を押して、コンソールを見るとわかると思われる。

なお、stateChanged の引数として受け取れるoldState, newStateの数値の意味合いは以下の通り。

数値
意味
0
接続中
1
接続(オンライン)
2
再接続中
4
切断(オフライン)

ログを確認するに、初期値は普通に”4”のようだった。接続時に、4 → 0 → 1 と変化するのを確認できる。

以上。

0 件のコメント:

コメントを投稿