Здесь 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
.