2015-11-13 9 views
5

Ho lavorato a un progetto per un cliente e mi sono divertito molto a integrare SignalR nel sistema.Le chiamate del client SignalR falliscono per alcune lingue

Tutto sembra funzionare molto bene e il cliente è davvero entusiasta di come il SignalR fornisce un vero feedback in tempo reale per la loro applicazione.

Per la maggior parte tutto è andato bene, tuttavia sono entrato in uno strano problema che semplicemente non riesco a definire.

Tutto grandi opere per le seguenti versioni locali:

  1. en-US
  2. it-IT
  3. si
  4. nl

Tuttavia nelle lingue semplicemente mai ottenere una richiamata da the hub:

  1. fr
  2. de
  3. es
  4. en-ZW - che usiamo Inglese Zimbabwe per controllare tutte le stringhe sono tradotte.

posso eseguire il codice a destra fino Clients.Client(ConnectionId).update(Result); (dove connectionId è l'ID di connessione corretta, e il Risultato è l'oggetto pronto per essere serializzato, con i primi quattro lingue questo va senza problemi e ottengo il mio metodo Javascript con i risultati attesi.

Nelle ultime quattro lingue tuttavia, il metodo è sparato, ma niente passa attraverso l'altro lato. niente. Zip.

Se sostituisco il file Strings.fr.resx con il default Strings.resx quindi il mio sito funziona come previsto, ma poiché il file Strings.en-ZW.resx è identico a Strings.resx (solo ogni stringa è avvolto in [()]) Dubito che sia il problema. Ho anche provato a usare il locale fr con tutte le traduzioni unicode (`, é, â, etc) rimosse, ma questo non ha aiutato.

L'ho esaminato per quasi un giorno intero e non ho trovato nulla che indicasse il problema, e il fatto che it funzioni bene e en-ZW non mi confonde davvero.

Qualcuno ha qualche suggerimento? Metodo

Hub:

public class ClientHub : Hub 
{ 
    [...] 

    protected void UpdateRecords(List<Int32> ChangedValues) 
    { 
     using (var database = new DbContext()) 
     { 
      foreach (Record R in database.Records.Where(Rc => ChangedValues.Contains(Rc.Id)) 
      { 
       SignalRFormattedRecord Serialized = new SignalRFormattedRecord(Record); 

       foreach (SavedFilter Filter in SavedFilters.ByRecord(Record)) 
       { 
        // Next line is always called. 
        Clients.Client(Filter.ConnectionId).updateRow(Serialized); 
       } 
      } 
     } 
    } 

    [...] 
} 

Javascript:

$.connection.clientHub.updateRow = function(value) { 
    debugger; 
    // update code works in all languages except FR, DE, ES and en-ZW. 
} 

$.connection.start(); 

risposta

2

Risulta il sistema di filtraggio non era la lingua agnostico, dove avrebbe dovuto essere, e mi è stato sempre falsi positivi dovuti a penzoloni connessioni durante debug.

Mi sento abbastanza stupido ora.

Problemi correlati