Здесь https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent он указывает, что данные атрибута имеют тип DOMString | Blob | ArrayBuffer. Как мне сказать, какой тип я хочу? Или как я узнаю, какой тип я получаю?
Как указать тип параметра websocket onmessage?
Ответ 1
Соответствующими двумя типами кадров, которые может отправлять сервер, являются текстовые фреймы и двоичные кадры (5.2). ws.binaryType позволяет определить, в каком формате вы хотите получить двоичные данные.
- Двоичные данные: в зависимости от
binaryTypeустанавливается либоarraybuffer, либоblob - Текстовые данные: строка
Чтобы определить тип, вы можете использовать:
-
e.data instanceof ArrayBuffer -
e.data instanceof Blob -
typeof e.data === "string"
4. Если тип указывает, что данные являются Text, тогда инициализируйте атрибут event
dataдля данных.Если тип указывает, что данные двоичные, а
binaryType- "blob", тогда инициализируйте атрибут eventdataновому объектуblob, который представляет данные в качестве исходных данных.Если тип указывает, что данные двоичные, а
binaryType- "arraybuffer", то инициализируйте атрибут eventdataновому объектуarraybuffer, доступному только для чтения, содержимое которогоdata.