2012-10-10 8 views
6

SignalR traci wiele wiadomości, gdy przesyłam porcje bajtów z klienta przez serwer do klienta (lub klienta do serwera lub serwera do klienta).Jak mogę przenieść bajty w porcjach do klientów?

Czytam plik do strumienia i wysyłam go przez hub lub trwałe połączenie z innym klientem. Działa bardzo szybko, ale zawsze pojawiają się lub znikają wiadomości.

Jak przenieść duże pliki (w częściach lub nie) z klienta na klienta bez utraty wiadomości?

Odpowiedz

5

Jak wskazuje @dfowler, nie jest to właściwa technologia do wykonania tej pracy. Polecam, aby wysłać wiadomość, że istnieje plik do pobrania, który zawiera łącze, a następnie można pobrać ten plik przy użyciu standardowych żądań GET przeciwko plikom statycznym lub usługom WWW napisanym przy użyciu interfejsu ASP.NET WebAPI.

4

SignalR nie służy do przesyłania plików, służy do wysyłania wiadomości.

4

Dlaczego nie jest to właściwa technologia? Jeśli klient musi przesłać dane do koncentratora signalR, powinien być w stanie przez połączenie signalR bez potrzeby dodatkowych rzeczy.

W rzeczywistości działa poprawnie przy wysyłaniu tablicy bajtów, przynajmniej dla mnie, jednak napotkałem podobne problemy podczas przesyłania porcji.

Być może możesz wykonać kilka testów, aby sprawdzić, czy kolejność wysyłania kawałków jest taka sama, jak w zamówieniu.

UPDATE

Zrobiłem test sobie iw moim przypadku kolejność była rzeczywiście problem. Zmodyfikowaliśmy metodę węzła otrzymującą porcje w celu zaakceptowania parametru zamówienia, który następnie wykorzystam do rekonstrukcji tablicy bajtów na końcu i działa dobrze. Powiedziawszy to, teraz jednak rozumiem, że to nie działałoby dobrze przy dużych transferach plików.

W moim przypadku nie muszę przesyłać bardzo dużych ilości danych, chciałem tylko dać mojemu interfejsowi informację o postępie, wymagając przesłania danych w porcjach.

+0

Czy masz do tego przykładowy kod? Jak się masz kawałki? Dzięki – user1331889

Powiązane problemy