SignalRはクライアントの切断をどのように処理しますか?私が次のように述べれば私は正しいですか?
- SignalRは、Javascriptイベント処理を介してブラウザページのクローズ/リフレッシュを検出し、適切なパケットをサーバーに送信します(永続的な接続を介して)。
- SignalRは、ブラウザのクローズ/ネットワーク障害を検出しません(おそらくタイムアウトによってのみ)。
ロングポーリング輸送を目指しています。
私はこの質問を知っていますが、私にとって少し明確にしたいと思います。
SignalRはクライアントの切断をどのように処理しますか?私が次のように述べれば私は正しいですか?
ロングポーリング輸送を目指しています。
私はこの質問を知っていますが、私にとって少し明確にしたいと思います。
ユーザーがページを更新すると、それは新しい接続として扱われます。切断がタイムアウトに基づいていることは正しいです。
SignalR.Hubs.IConnected
およびを実装することにより、ハブで接続/再接続および切断イベントを処理できますSignalR.Hubs.IDisconnect
。
上記はSignalR0.5.xを参照しています。
公式ドキュメント(現在v1.1.3の場合)から:
public class ContosoChatHub : Hub
{
public override Task OnConnected()
{
// Add your own code here.
// For example: in a chat application, record the association between
// the current connection ID and user name, and mark the user as online.
// After the code in this method completes, the client is informed that
// the connection is established; for example, in a JavaScript client,
// the start().done callback is executed.
return base.OnConnected();
}
public override Task OnDisconnected()
{
// Add your own code here.
// For example: in a chat application, mark the user as offline,
// delete the association between the current connection id and user name.
return base.OnDisconnected();
}
public override Task OnReconnected()
{
// Add your own code here.
// For example: in a chat application, you might have marked the
// user as offline after a period of inactivity; in that case
// mark the user as online again.
return base.OnReconnected();
}
}
SignalR 1.0では、SignalR.Hubs.IConnectedとSignalR.Hubs.IDisconnectは実装されなくなり、ハブ自体のオーバーライドになりました。
public class Chat : Hub
{
public override Task OnConnected()
{
return base.OnConnected();
}
public override Task OnDisconnected()
{
return base.OnDisconnected();
}
public override Task OnReconnected()
{
return base.OnReconnected();
}
}