我对signalR完全陌生,也是javascript的新手。 我有一个signalR集线器和一个演示客户端应用程序,它连接到集线器以及向Hub.Groups添加特定组。 这一切似乎都正常。 在我的连接上,我创建了一个名为notifyStatusUpdate的事件处理程序来更新每个特定的组。但是当我尝试在服务器端使用它时,客户端绝对没有做任何事情。
function connect(e) {
var env = $('#env option:selected').val();
connection = $.hubConnection(env + '/signalr', { useDefaultPath: false });
connection.logging = true;
paymentsHubProxy = connection.createHubProxy('paymentsHub');
paymentsHubProxy.on('notifyStatusUpdate', function (result) {
console.log(result);
receivedTxt.val(JSON.stringify(result));
});
connection.start()
.done(function () {
console.log('Now connected, connection ID=' + connection.id);
subscribeBtn.removeProp("disabled");
saveBillItemsBtn.removeProp("disabled");
})
.fail(function () {
console.log('Could not connect');
});
e.preventDefault();
}
这是应该调用它的客户端代码,但不是。
public BaseApiResponse<TriggerStatusUpdateResponse> TriggerStatusUpdate(TriggerStatusUpdateRequest request) {
try
{
LoggingService.LogInfo("entering...");
var statuses = paymentsManager.GetMultipleOrderStatuses(request.OrderIds.ToArray());
GlobalHost.ConnectionManager.GetHubContext<PaymentsHub>().Clients.Group(request.SiteId).notifyStatusUpdate(new { Statuses = statuses });
return new BaseApiResponse<TriggerStatusUpdateResponse>("Success",ResponseStatusType.Success);
}
我试图在客户端创建一个函数,基本上只捕获所有,显示一些东西。
paymentsHubProxy.on('notifyStatusUpdate', function (result) {
console.log(result)
receivedTxt.val(result.toString);
});
虽然服务器端调用类似
的内容GlobalHost.ConnectionManager.GetHubContext<PaymentsHub>().Clients.All.notifyStatusUpdate("WORKDARNIT");
无济于事。什么都行不通,我不明白为什么。