Tôi đang sử dụng signalr 0.4 trên một aspx-Page,Signalr dừng làm Callback sau vài phút
var hub = $.connection.FooHub;
hub.disconnected(function() {
log("Server has disconnected");
});
hub.ShowInfo = function (Info) { .... }
$("#Button1").click(function() {
hub.FooFunction('foo');
});
$.connection.hub.start();
Các Hub được định nghĩa là:
public class FooHub : Hub, IDisconnect
{
~FooHub()
{
log.Debug("FooHub Destroy");
}
public FooHub()
{
log.Debug("FooHub Startup");
}
public bool FooFunction(string stuff)
{
log.Debug("Hub FooFunction");
Clients.ShowInfo(someInfo);
return true;
}
public Task Disconnect()
{
// Query the database to find the user by it's client id etc. etc.
MyController.Disconnect(Context.ConnectionId);
log.Debug("Hub Disconnnect " + Context.ConnectionId);
return null;
}
......
}
Khi tôi mở trang và ngay lập tức bấm vào Button1
nó gọi Hub lần lượt gọi hàm ShowInfo trên trang.
Với Firebug tôi có thể thấy rằng signalr đang sử dụng phiếu thăm dò ý kiến lâu dài cho việc thu thập thông tin. Vì vậy, mọi thứ hoạt động như mong đợi.
Nhưng khi tôi sau đó chờ đợi một vài phút
tôi thấy rằng
- FooHub bị phá hủy
- Ngắt kết nối được gọi trong Hub,
tuy nhiên trên trang không có kết nối mới
Firebug hiển thị hình ảnh cũ vẫn đang được thực hiện
và khi tôi nhấp vào nút -
- FooFunction được gọi là (i thấy một kết nối mới trong firebug)
- FooHub được tạo ra
- FooFunction được thực hiện trong Hub (có một dòng trong Log)
- nhưng ShowInfo chẳng thi hành ngay
Đây có phải là lỗi trong SignalR hoặc tôi có phải làm điều gì đó khác để nhận cuộc gọi ShowInfo không?
Cập nhật (Có khả năng câu trả lời):
Nó được sử dụng một Vô hạn-Frame và không dài bỏ phiếu.
Ngoài ra, sự cố dường như xảy ra chủ yếu khi sử dụng Internet di động (usb-stick) và Firefox.
Thay đổi vận chuyển thành Phấn hoa dài dường như khắc phục được sự cố này.