yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
emscripten_websocket.h
Go to the documentation of this file.
1#ifndef YAZE_APP_NET_WASM_EMSCRIPTEN_WEBSOCKET_H_
2#define YAZE_APP_NET_WASM_EMSCRIPTEN_WEBSOCKET_H_
3
4#ifdef __EMSCRIPTEN__
5
6#include <emscripten/websocket.h>
7
9
10namespace yaze {
11namespace net {
12
20class EmscriptenWebSocket : public IWebSocket {
21 public:
22 EmscriptenWebSocket();
23 ~EmscriptenWebSocket() override;
24
30 absl::Status Connect(const std::string& url) override;
31
37 absl::Status Send(const std::string& message) override;
38
45 absl::Status SendBinary(const uint8_t* data, size_t length) override;
46
53 absl::Status Close(int code = 1000,
54 const std::string& reason = "") override;
55
60 WebSocketState GetState() const override { return state_; }
61
66 void OnMessage(MessageCallback callback) override {
67 message_callback_ = callback;
68 }
69
74 void OnBinaryMessage(BinaryMessageCallback callback) override {
75 binary_message_callback_ = callback;
76 }
77
82 void OnOpen(OpenCallback callback) override {
83 open_callback_ = callback;
84 }
85
90 void OnClose(CloseCallback callback) override {
91 close_callback_ = callback;
92 }
93
98 void OnError(ErrorCallback callback) override {
99 error_callback_ = callback;
100 }
101
102 private:
103 // Emscripten WebSocket callbacks (static, with user data)
104 static EM_BOOL OnOpenCallback(int eventType,
105 const EmscriptenWebSocketOpenEvent* websocketEvent,
106 void* userData);
107
108 static EM_BOOL OnCloseCallback(int eventType,
109 const EmscriptenWebSocketCloseEvent* websocketEvent,
110 void* userData);
111
112 static EM_BOOL OnErrorCallback(int eventType,
113 const EmscriptenWebSocketErrorEvent* websocketEvent,
114 void* userData);
115
116 static EM_BOOL OnMessageCallback(int eventType,
117 const EmscriptenWebSocketMessageEvent* websocketEvent,
118 void* userData);
119
120 // Emscripten WebSocket handle
121 EMSCRIPTEN_WEBSOCKET_T socket_;
122
123 // Track if socket is valid
124 bool socket_valid_;
125};
126
127} // namespace net
128} // namespace yaze
129
130#endif // __EMSCRIPTEN__
131
132#endif // YAZE_APP_NET_WASM_EMSCRIPTEN_WEBSOCKET_H_
WebSocketState
WebSocket connection states.