IDisconnectインターフェースを実装するハブを作成しました。なぜDisconnectが実行されないのかわかりません。Visual Studioデバッグでは機能しない可能性があることを読みましたが、本番サーバーでもテストしました。
これが私のコードです:
[HubName("myHub")]
public class MyHub: Hub, IDisconnect, IConnected
{
public Task Disconnect()
{
Log.SaveCurrentTime();
return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Connect()
{
return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Reconnect(IEnumerable<string> groups)
{
return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
}
public void Test()
{
Log.SaveCurrentTime();
}
}
Log.SaveCurrentTime()はテストのみを目的としており、現在の日時をデータベースレコードに保存します。firebugを使用してコンソールでhub.test()を実行すると、すべて問題ありませんが、ブラウザーを閉じると、現在の時刻がデータベースに保存されないため、Disconnectが実行されません。
ここにMyHub.jsのコードを追加しました
var hub;
$(function () {
hub = $.connection.myHub;
$.connection.hub.start().done(function () {
alert('connected');
})
});