Ich versuche, einen Server zu Client-Broadcast-Mechanismus mit SignalR zu erstellen und es scheint nichts zu tun.SignalR nicht Broadcasting
Ich habe eine Nabe wie folgt aus:
public class DataMessageService : Hub, IClientNotificationService
{
dynamic _clients;
public DataMessageService(IConnectionManager connectionManager)
{
_clients = connectionManager.GetClients<DataMessageService>();
}
public void SendDataChangeNotification(string entityName, string changeType, string id)
{
_clients.dataChangeNotification(new string[] {entityName, changeType, id});
}
}
Mein _Layouts.cshtml hat dies:
var _centralHub;
$(function() {
// startup the signalr hub and get the proxies we need
_centralHub = $.connection.dataMessageService;
$.connection.hub.start();
});
Und ich habe einige Code in einem Teil, die durch eine jquery Reiter Ajax geladen wird:
_centralHub.dataChangeNotification = function (data) {
alert(data[0] + "::" + data[1] + "::" + data[2]);
if (data[0] == 'User') {
grid.refresh();
}
};
nun in der Datenschicht, wenn einige crud Handlung vorgenommen wird, nenne ich DataMessageService.SendData ChangeNotification, aber am Client-Ende passiert nichts.
Fehle ich etwas?
Update: Ich dachte, es könnte etwas mit dem vs-Webserver-Ding zu tun haben, aber es scheitert auch, wenn ich den vollständigen IIS (auf Win 7) benutze.
Ein weiteres Update: Ich hatte meinen Service mit meinem Hub verwechselt. Ich spalte diese jetzt so, dass es wie folgt aussieht, aber es funktioniert immer noch nicht.
public class DataMessageService : IClientNotificationService
{
public void SendDataChangeNotification(string entityName, string changeType, string id)
{
IConnectionManager icm = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = icm.GetClients<DataMessageHub>();
clients.dataChangeNotification(new string[] { entityName, changeType, id });
}
}
public class DataMessageHub : Hub
{
}
:(
Noch mehr Informationen:.
Der mit FireFox funktioniert aber nicht mit IE oder Chrome
ich auch eine einfache Beispielanwendung zu erstellen versucht, und das funktionierte ok mit Chrome und IE.
Da wir keine Web-Sockets zur Verfügung haben, ist Long-Polling möglicherweise nicht ag ood Idee für unsere Benutzer/Infrastruktur. Vielleicht eines Tages ...
Danke für die Bearbeitung Mike :) Ich konnte nicht den Code erhalten schön zu formatieren. – Jonesie
Ich hatte ähnliche seltsame Probleme mit SignalR. Der Aufruf einer serverseitigen Dummy-Methode aus dem JS nach dem Start war für mich die einzige Möglichkeit, serverseitige Aufrufe an den Client zu erhalten. '$ .connection.hub.start (function() {hubName.dummyMethodOnServer();}); – Svend
Hey, danke dafür. Ich habe die Änderung vorgenommen, die Sie vorgeschlagen haben, und es hat funktioniert ... einmal, dann gestoppt. :(Nicht sicher warum, aber es gibt Hoffnung. – Jonesie