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 件のコメント:
コメントを投稿