我寫了一個實現IDisconnect接口的集線器。我不知道爲什麼Disconnect永遠不會執行。我讀過它可能不適用於visual studio debug,但是我甚至在生產服務器上測試過它。服務器端的SignalR IDisconnect不起作用
這裏是我的代碼:
[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()僅用於測試目的,並保存當前日期時間做數據庫記錄。如果我用戶螢火蟲並在控制檯執行hub.test(),一切都很好,但是當我關閉瀏覽器當前時間不保存到數據庫,所以斷開連接不beeing執行。
在這裏,我添加的MyHub.js
var hub;
$(function() {
hub = $.connection.myHub;
$.connection.hub.start().done(function() {
alert('connected');
})
});
您是否使用內置的VS服務器?如果是這樣,請改用IISExpress。 – davidfowl 2012-08-03 22:02:50
我試圖在生產服務器上使用IISExpress和普通的IIS。 – mrrobot 2012-08-03 23:21:06
它絕對有效。你使用的是什麼瀏覽器?你使用的是什麼版本的SignalR? – davidfowl 2012-08-03 23:41:54