Tôi dường như gặp sự cố với Trung tâm khách hàng JS của SignalR.Sự kiện Bật trên Trung tâm khách hàng SignalR không được gọi là
Vấn đề là trình xử lý 'bật' dường như không hoạt động - nó không tạo ra lỗi nhưng không nhận được bất kỳ tín hiệu nào được gửi bởi máy chủ. Đoạn mã dưới đây cho thấy một trích xuất nơi tôi gọi máy chủ (sử dụng lời gọi) hoạt động tốt - sau đó trên máy chủ tôi gọi lại để acceptHubData mà nên được chọn trên máy khách nhưng không phải.
Mục tiêu của tôi là khi điều hướng đến các trang mà mỗi trang sẽ mở kết nối với một trung tâm cụ thể và giải phóng kết nối này khi người dùng chuyển sang một trang khác !!
EDIT: sử dụng đoạn mã sau hoạt động nhưng tôi tự hỏi tại sao mã bên dưới sử dụng sự kiện 'bật' không hoạt động!
var superHub = $.connection.mySuperHub;
superHub.client.acceptHubData = function (data) {
$('<li>hello there' + data + '</li>').prependTo($('#ul1'))
}
$.connection.hub.start().done(function() {
$('<li>done phase 1</li>').prependTo($('#ul1'))
});
Mọi trợ giúp sẽ được đánh giá cao!
Đây là mã khách hàng (trong js)
$(document).ready(function() {
var myHub;
try {
var connection = $.hubConnection();
connection.start().done(function() {
myHub = connection.createHubProxy("mySuperHub");
myHub.on('acceptHubData', function (data) {
alert(data); // THIS IS NOT CALLED!
});
myHub.invoke('AcceptSignal', "hello from the client2");
});
}
catch (e) {
alert(e.message);
}
});
Đây là mã Server:
[HubName("mySuperHub")]
public class MyHub : Hub
{
private readonly HubEngine _hubEngine;
public MyHub() : this(HubEngine.Instance) { }
public MyHub(HubEngine hubEngine)
{
_hubEngine = hubEngine;
}
public void AcceptSignal(string msg)
{
Clients.Caller.acceptHubData("hi");
Clients.All.acceptHubData("hi");
}
}
Xem http://stackoverflow.com/a/42527962/1770868 –