@@ -68,8 +68,10 @@ void WsHAL_ReceptionWeb(const std::vector<uint8_t> &data)
6868 clientWebsocket->send (arrayBufferView);
6969}
7070
71- [[cheerp::genericjs]] void WsHAL_AddWsEventHandlers () {
71+ [[cheerp::genericjs]] void WsHAL_AddWsEventHandlers ()
72+ {
7273 clientWebsocket = new WebSocket (s_url);
74+ clientWebsocket->set_binaryType (" arraybuffer" );
7375 clientWebsocket->addEventListener (
7476 " open" ,
7577 cheerp::Callback (openEventCallback));
@@ -81,31 +83,31 @@ void WsHAL_ReceptionWeb(const std::vector<uint8_t> &data)
8183 cheerp::Callback (errorEventCallback));
8284 clientWebsocket->addEventListener (
8385 " message" ,
84- cheerp::Callback ([](MessageEvent *e) {
85- auto *dataArray = (Uint8Array *)e->get_data ();
86+ cheerp::Callback ([](MessageEvent *e)
87+ {
88+ auto *dataBuffer = (ArrayBuffer *)e->get_data ();
89+ auto *dataArray = new Uint8Array (dataBuffer);
8690 std::vector<uint8_t > wasmData (dataArray->get_length ());
8791 Uint8Array *wasmDataArray = cheerp::MakeTypedArray (wasmData.data (), wasmData.size ());
8892 wasmDataArray->set (dataArray);
8993 WsHAL_ReceptionWeb (wasmData);
90- }));
9194}
9295
9396[[cheerp::genericjs]] void WsHAL_InitWeb ()
9497{
9598 bool isBrowser;
9699 __asm__ (" typeof %1 !== 'undefined'" : " =r" (isBrowser) : " r" (&client::window));
97- if (isBrowser) {
100+ if (isBrowser)
101+ {
98102 WsHAL_AddWsEventHandlers ();
99103 }
100104 else
101105 {
102106 client::import (" ws" )
103- ->then (cheerp::Callback ([](client::Object *lib) {
104- __asm__ (" globalThis.WebSocket=%0.WebSocket" ::" r" (lib));
105- }))
106- ->then (cheerp::Callback ([]() {
107- WsHAL_AddWsEventHandlers ();
108- }));
107+ ->then (cheerp::Callback ([](client::Object *lib)
108+ { __asm__ (" globalThis.WebSocket=%0.WebSocket" ::" r" (lib)); }))
109+ ->then (cheerp::Callback ([]()
110+ { WsHAL_AddWsEventHandlers (); }));
109111 }
110112}
111113
0 commit comments