2015-12-21 17 views
7

Ho un problema che quando invio messaggi dal server al client non arrivano al client nell'ordine originale. Ho una funzione di test qui:SignalR come preservare l'ordine dei messaggi dal server al client

public async Task Hello(string group) 
    { 
     await Groups.Add(Context.ConnectionId, group); 
     await Clients.Group("grp1").Hello("grp1"); 
     await Clients.Group("grp2").Hello("grp2"); 
     await Clients.All.Hello("all"); 
    } 

E su client:

var chanceHub = $.connection.chanceHub; 
chanceHub.client.Hello = function (message) { 
    alert(message); 
} 
$.connection.hub.start().done(function() { 
    chanceHub.server.hello("grp1"); 
}); 

mi aspetto di ottenere 2 segnalazioni in questo ordine: "Grp1", quindi "tutti" Ma ho sempre trovato la messaggio "tutto" prima. C'è un modo per risolvere questo problema?

+0

SignalR preserverà l'ordine dei messaggi. Sei sicuro che il client sia stato aggiunto al gruppo? –

+0

@StephenCleary sì, il client è in grp1. Ma l'ordine non è conservato e non riesco a capire perché ... l'ordine dei messaggi all'interno di un gruppo è ok, ma quando si parla di messaggistica tra gruppi, tutto cambia shuffles – CodeDemen

risposta

5

È un problema irrisolto # 3310 per questo problema. Il problema descrive anche una soluzione alternativa Issue #3310

+2

Questo problema suggerisce l'aggiunta di "await's" per far funzionare le cose. Il codice OPs contiene già 'attendi'. –

Problemi correlati