Какой тип данных мы получаем от signalr hub?

#signalr #blob

#сигналр #клякса

Вопрос:

Я пишу потоковый компонент, отправляя двоичный объект mediarecorder (event.data) в концентратор SignalR и возвращаю тот же двоичный объект другим пользователям, подключенным с помощью метода SendAsync. Но объект, который я получаю от hub, отличается от того, что я передал в hub. Потому что мой JS-код на стороне клиента не распознает его как объект event.data. Мой вопрос в том, как изменится объект после передачи в hub? Вот код hub и как я могу вернуть его к исходному значению после получения обратно от hub

     public async Task SendBlob(Object blob)
            {
                await Clients.All.SendAsync("ReceivingBlob", blob);
            } 
 

Комментарии:

1. Я считаю, что отправленный объект сериализуется, поэтому вы можете просто получить его string (json).

2. Вы имеете в виду, что невозможно десериализовать его в исходный двоичный объект?

3. Это вполне возможно. Вы просто передаете объект, который будет получен в методе, где у вас есть Object для вашего объекта, например public async Task SendBlob(YourBlobObject blob)

4. К сожалению, это не работает. Объект, который он получил от hub в моем JS-коде, отличается от объекта, отправленного в hub. Причина в том, что я могу применить «ArrayBuffer()» к отправленному объекту, но не к полученному объекту. Кроме того, я не знаю, какой соответствующий тип отправляемых данных в C # должен быть объявлен в сигнатуре метода (YourBlobObject blob). Это байтовый массив?.

5. YourBlobObject это будет тип объекта, который вы хотите получить. Вы можете сказать, что это копия объекта, который у вас есть из кода JS, но на языке c #. Вы можете увидеть это репо для SignalR: github.com/Kiril1512/SignalRDemo Там вы можете видеть, что у hub есть a NewMessage , который отправит ChatMessage объект. Это тот же объект, что и код Angular во внешнем интерфейсе. Взгляните на репо…