2012-10-10 20 views
6

SignalR perde molti messaggi quando trasferisco blocchi di byte dal client sul server al client (o dal client al server o dal server al client).Come posso trasferire byte in blocchi ai client?

Ho letto il file in uno stream e l'ho inviato su un hub o una connessione permanente ad un altro client. Funziona molto velocemente, ma ci sono sempre messaggi persi o persi.

Come posso trasferire file di grandi dimensioni (in blocchi o meno) dal client al client senza perdere i messaggi?

risposta

5

Come sottolinea @dfowler, non è la tecnologia giusta per il lavoro. Quello che consiglierei di fare è inviare un messaggio che c'è un file da scaricare che include il link e quindi è possibile scaricare quel file utilizzando le richieste GET standard contro i file statici o alcuni servizi Web scritti con Web API di ASP.NET.

4

SignalR non è per il trasferimento di file, è per l'invio di messaggi.

4

Perché non è la tecnologia giusta? Se un cliente ha bisogno di inviare alcuni dati a un hub signalR dovrebbe essere in grado di oltre la connessione signalR senza richiedere ulteriori informazioni.

In effetti funziona bene quando si invia un array di byte, almeno per me, tuttavia ho riscontrato problemi simili durante il trasferimento di blocchi.

Forse è possibile eseguire alcuni test per verificare se l'ordine in cui si inviano i blocchi è lo stesso dell'ordine in cui vengono ricevuti.

UPDATE

Ho fatto una prova me stesso e nel mio caso l'ordine era davvero il problema. Modificato il metodo hub che riceve i blocchi per accettare un parametro di ordine che poi utilizzo per ricostruire l'array di byte alla fine e funziona correttamente. Detto questo, tuttavia, ora capisco che ciò non funzionerebbe bene con i trasferimenti di file di grandi dimensioni.

Nel mio caso non ho bisogno di trasferire grandi quantità di dati, volevo solo dare alla mia interfaccia utente un'indicazione di progresso, richiedendo che i dati fossero inviati in blocchi.

+0

Avete un codice di esempio per questo? Come stai prendendo i pezzi? Grazie – user1331889