Я следил за этим руководством, ASP.NET SignalR Hubs API Guide (How to manage group membership from the Hub class) и все же не смог получить методы на стороне сервера ShipmentHub
.Методы сервера регистрации группы SignalR не были удалены
Мой ShipmentHub
класс выглядит следующим образом:
public class ShipmentHub : Hub
{
IShipmentLogic shipmentLogic;
public ShipmentHub(IShipmentLogic shipmentLogic)
{
this.shipmentLogic = shipmentLogic;
}
public void CreateShipment(IEnumerable<Shipment> shipments)
{
// Clients.All.createShipment(shipments.OrderByDescending(s => s.CreatedDate));
Clients.Group(shipments.FirstOrDefault().ShipmentId)
.createShipment(shipments.OrderByDescending(s => s.CreatedDate));
}
public async Task WatchShipmentId(string shipmentId)
{
await Groups.Add(Context.ConnectionId, shipmentId);
Clients.Group(shipmentId).createShipment(shipmentLogic.Get(shipmentId, true));
}
public Task StopWatchingShipmentId(string shipmentId)
{
return Groups.Remove(Context.ConnectionId, shipmentId);
}
}
Мой клиент, более или менее, выглядит следующим образом:
var shipmentHub = $.connection.shipmentHub;
$.connection.hub.logging = true;
$.connection.hub.start();
var shipmentId = "SHP-W-GE-100122";
if (previousShipmentId) {
shipmentHub.server.stopWatchingShipmentId(previousShipmentId);
}
if (shipmentId.length) {
previousShipmentId = shipmentId;
shipmentHub.server.watchShipmentId(shipmentId);
}
В клиентских журналах SignalR я вижу, что они называют:
SignalR: Invoking shipmenthub.WatchShipmentId
SignalR: Вызов shipmenthub.StopWatchingShipmentId
SignalR: Вызов shipmenthub.WatchShipmentId
И, кроме всего журналов, эти методы являются удара:
proxies['shipmentHub'].server = {
createShipment: function (shipments) {
return proxies['shipmentHub'].invoke.apply(proxies['shipmentHub'], $.merge(["CreateShipment"], $.makeArray(arguments)));
},
stopWatchingShipmentId: function (shipmentId) {
return proxies['shipmentHub'].invoke.apply(proxies['shipmentHub'], $.merge(["StopWatchingShipmentId"], $.makeArray(arguments)));
},
watchShipmentId: function (shipmentId) {
return proxies['shipmentHub'].invoke.apply(proxies['shipmentHub'], $.merge(["WatchShipmentId"], $.makeArray(arguments)));
}
};
И, как последнее замечание, прежде чем я добавил методы Watch
и StopWatching
, все остальное работало (т. е. CreateShipment
назвал бы Client.All.createShipment
метод без проблем).
же вопрос. Это в событии eventListener для события размытия ввода. Я перевел регистрацию этого 'eventListener' на обещание' done' и по-прежнему не могу использовать методы на сервере. То есть '$ .connection.hub.start(). Done (function() {theInput.addEventListener ('blur', function (evt) {// do stuff})});' – Tom