Zdarzenie On w Hub klienta SignalR nie jest wywoływane
Wydaje mi się, że mam problem z centrum klienta JS SignalR.
Problem polega na tym, że program obsługi „on” nie działa - nie generuje żadnego błędu, ale nie odbiera żadnych sygnałów wysyłanych przez serwer. Poniższy kod pokazuje fragment, w którym wywołuję serwer (używając wywołania), który działa dobrze - następnie na serwerze oddzwonię do acceptHubData, który powinien być odebrany na kliencie, ale nie jest.
Moim celem jest przejście do stron, na których każda strona otworzy połączenie z konkretnym koncentratorem i zwolni to połączenie, gdy użytkownik przejdzie na inną stronę !!
EDYTOWAĆ: korzystając z poniższego fragmentu kodu, ale zastanawiam się, dlaczego poniższy kod wykorzystujący zdarzenie „on” nie działa!
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'))
});
Każda pomoc byłaby bardzo mile widziana!
To jest kod klienta (w 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);
}
});
To jest kod serwera:
[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");
}
}