#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 есть aNewMessage
, который отправитChatMessage
объект. Это тот же объект, что и код Angular во внешнем интерфейсе. Взгляните на репо…