Tutaj https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent stwierdza, że dane atrybutów są typu DOMString | Blob | ArrayBuffer. Jak mogę powiedzieć, jakiego typu chcę? Albo skąd mam wiedzieć, jaki typ dostaję?Jak mogę określić typ parametru onmessage websocket?
17
A
Odpowiedz
35
Odpowiednie dwa typy ramek, które serwer może wysyłać, to ramki tekstowe i ramki binarne (5.2). Opcja ws.binaryType
pozwala określić, w jakim formacie chcesz uzyskać dane binarne.
- Dane binarne: zależnie od
binaryType
jest ustawiony alboarraybuffer
lubblob
- Tekst dane: string
Aby określić typ, można użyć:
e.data instanceof ArrayBuffer
e.data instanceof Blob
typeof e.data === "string"
4. Jeśli typu wskazuje, czy dane są na tekst, wówczas zainicjować zdarzenie „s
data
atrybutów do danych.Jeśli typ wskazuje, że dane binarne, a
binaryType
jest ustawiony na „blob
”, a następnie zainicjować zdarzenie „sdata
atrybut do nowejBlob
obiektu, który reprezentuje dane jak jego surowych danych.Jeśli typ wskazuje, że dane binarne, a
binaryType
jest ustawiony na „arraybuffer
”, a następnie zainicjować zdarzenie „sdata
atrybut do nowej tylko do odczytuArrayBuffer
obiektu, którego zawartość jestdata
.