1#ifndef YAZE_APP_NET_WASM_EMSCRIPTEN_WEBSOCKET_H_
2#define YAZE_APP_NET_WASM_EMSCRIPTEN_WEBSOCKET_H_
6#include <emscripten/websocket.h>
20class EmscriptenWebSocket :
public IWebSocket {
22 EmscriptenWebSocket();
23 ~EmscriptenWebSocket()
override;
30 absl::Status Connect(
const std::string& url)
override;
37 absl::Status Send(
const std::string& message)
override;
45 absl::Status SendBinary(
const uint8_t* data,
size_t length)
override;
53 absl::Status
Close(
int code = 1000,
54 const std::string& reason =
"")
override;
66 void OnMessage(MessageCallback callback)
override {
67 message_callback_ = callback;
74 void OnBinaryMessage(BinaryMessageCallback callback)
override {
75 binary_message_callback_ = callback;
82 void OnOpen(OpenCallback callback)
override {
83 open_callback_ = callback;
90 void OnClose(CloseCallback callback)
override {
91 close_callback_ = callback;
98 void OnError(ErrorCallback callback)
override {
99 error_callback_ = callback;
104 static EM_BOOL OnOpenCallback(
int eventType,
105 const EmscriptenWebSocketOpenEvent* websocketEvent,
108 static EM_BOOL OnCloseCallback(
int eventType,
109 const EmscriptenWebSocketCloseEvent* websocketEvent,
112 static EM_BOOL OnErrorCallback(
int eventType,
113 const EmscriptenWebSocketErrorEvent* websocketEvent,
116 static EM_BOOL OnMessageCallback(
int eventType,
117 const EmscriptenWebSocketMessageEvent* websocketEvent,
121 EMSCRIPTEN_WEBSOCKET_T socket_;
WebSocketState
WebSocket connection states.