Je travaille avec signalR. La fonctionnalité de groupe ne fonctionne pas correctement.SignalR travail avec les groupes ne fonctionne pas correctement
Ici, il est mon hub:
public class BasketHub : Hub
{
public void Login(int companyId)
{
string groupName = "company" + companyId;
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BasketHub>();
context.Groups.Add(Context.ConnectionId, groupName);
}
public void Logout(int companyId)
{
string groupName = "company" + companyId;
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BasketHub>();
context.Groups.Remove(Context.ConnectionId, groupName);
}
}
Ici, il utilise côté serveur:
public void OrderConfirm(OrderConfirmModel orderConfirmModel)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BasketHub>();
var groupName = "company" + orderConfirmModel.CompanyId;
context.Clients.Group(groupName).orderConfirm(orderConfirmModel.DidNewOrder);
context.Clients.Group(groupName).newOrderCount(orderConfirmModel.DidNewOrder);
context.Clients.Group(groupName).didGetNotification(orderConfirmModel.BasketId);
}
Ici, il est client:
$(function() {
var basketHub = $.connection.basketHub;
basketHub.client.newOrderCount = function (isNewOrder) {
// some code
}
basketHub.client.didGetNotification = function (basketId) {
// some code
}
basketHub.client.orderConfirm = function (isNewOrder) {
// some code
}
$.connection.hub.start();
});
Ici, il est un groupe ajouter et supprimer des clients:
$(function() {
var basketHub = $.connection.basketHub;
$.connection.hub.start().done(function() {
basketHub.server.login($scope.Company.Id);
$('#logoutBtn').click(function() {
basketHub.server.logout($scope.Company.Id);
});
});
$(window).bind('beforeunload', function (e) {
basketHub.server.logout($scope.Company.Id);
});
});
J'ai créé le groupe sur le contexte BasketHub. Cependant, quand j'essaie d'utiliser ce groupe, je ne l'atteins pas. Et il n'y a pas de notifications déclenchées du côté client.
Je peux l'utiliser comme ci-dessous:
context.Clients.All.orderConfirm(orderConfirmModel.DidNewOrder);
context.Clients.All.newOrderCount(orderConfirmModel.DidNewOrder);
context.Clients.All.didGetNotification(orderConfirmModel.BasketId);
Cordialement.
Pouvez-vous confirmer que sur le débogage, vous avez pu voir le login se produire avec le connectionId ajouté dans le groupe avec un COMPANYID et dans la méthode OrderConfirm, vous obtenez le même COMPANYID? Aussi, si la méthode OrderConfirm est dans le Hub ou dans un autre contrôleur MVC ou API? – KRoy
Ouais même companyId. Confirmé. –