我正在尝试连接到消息队列并使用SignalR.So将所有通知推回到Web(Angularjs)。每当有消息是侦听器应该处理消息并刷新网页的队列时。
监听器(SignalR.SelfHost.DotNetClient)正在将通知正确地推送到SignalR.SelfHost.Server中的Send方法。但是,消息不会被推回到Web中的客户端。不会调用客户端中的broadcastMessage方法。请告诉我这里有什么问题。
甚至hub.start中的警报也没有触发
我这里有3个项目
SignalR.SelfHost.DotNetClient - 消息队列的监听器
static void Main(string[] args)
{
var hubConnection = new HubConnection("http://localhost:8080/");
var serverHub = hubConnection.CreateHubProxy("NotificationHub");
//serverHub.On("broadcastMessage", message => System.Console.WriteLine(message));
hubConnection.Start().Wait();
// Send a json array message to the server
var message="{'externalDeviceId': '0102030405060700A100010A', 'deviceId':'28C2A18F647B2F81','friendlyName' : 'unknown','userId' : 'HHFR','deviceFullType' : 'iOS-iPad' ,'drmDeviceId':'28C2A18F647B2F81', 'accountId' : 'HH0A','drmDeviceType': 'IOS', 'preferences ': { 'audioLanguage':'FIN', 'friendlyName':'unknown', 'audioDescriptionFlag':false, 'bannerDisplayTimeout':7, 'isConnected':true, 'presenceStatus':'ONLINE' } }".Replace("'", "\"");
serverHub.Invoke("Send", "[" + message + "]").Wait();
}
SignalR.SelfHost.Server -Self托管SignalR
public class NotificationHub : Hub
{
public static IHubContext HubContext
{
get
{
if (_context == null)
_context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
return _context;
}
}
static IHubContext _context = null;
public void Send(string message)
{
//Clients.All.broadcastMessage(message);
HubContext.Clients.All.broadcastMessage(message);
}
}
Web - AngularJS
<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
<script src="http://localhost:8080/signalr/hubs/" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
/*Set the hubs URL for the connection */
debugger;
$.connection.hub.url = "http://localhost:8080/signalr";
/* Declare a proxy to reference the hub.*/
var hubClient = $.connection.notificationHub;
//$.connection.hub.start();
/* Create a function that the hub can call to broadcast messages.*/
hubClient.client.broadcastMessage = function (data) {
alert(data);
}
/* Start the connection.*/
$.connection.hub.start().done(function () {
/* Call the Send method on the hub */
alert('Hi');
});