yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
httplib_websocket.h
Go to the documentation of this file.
1#ifndef YAZE_APP_NET_NATIVE_HTTPLIB_WEBSOCKET_H_
2#define YAZE_APP_NET_NATIVE_HTTPLIB_WEBSOCKET_H_
3
4#include <atomic>
5#include <memory>
6#include <thread>
7
9
10// Forward declaration
11namespace httplib {
12class Client;
13}
14
15namespace yaze {
16namespace net {
17
28 public:
30 ~HttpLibWebSocket() override;
31
37 absl::Status Connect(const std::string& url) override;
38
44 absl::Status Send(const std::string& message) override;
45
52 absl::Status SendBinary(const uint8_t* data, size_t length) override;
53
60 absl::Status Close(int code = 1000,
61 const std::string& reason = "") override;
62
67 WebSocketState GetState() const override { return state_; }
68
73 void OnMessage(MessageCallback callback) override {
74 message_callback_ = callback;
75 }
76
81 void OnBinaryMessage(BinaryMessageCallback callback) override {
82 binary_message_callback_ = callback;
83 }
84
89 void OnOpen(OpenCallback callback) override {
90 open_callback_ = callback;
91 }
92
97 void OnClose(CloseCallback callback) override {
98 close_callback_ = callback;
99 }
100
105 void OnError(ErrorCallback callback) override {
106 error_callback_ = callback;
107 }
108
109 private:
116 absl::Status ParseWebSocketUrl(const std::string& ws_url,
117 std::string& http_url);
118
122 void ReceiveLoop();
123
127 void StopReceiveLoop();
128
129 // HTTP client for fallback implementation
130 std::shared_ptr<httplib::Client> client_;
131
132 // Background receive thread
133 std::thread receive_thread_;
134 std::atomic<bool> stop_receive_;
135
136 // Connection details
137 std::string session_id_;
138 std::string http_endpoint_;
139};
140
141} // namespace net
142} // namespace yaze
143
144#endif // YAZE_APP_NET_NATIVE_HTTPLIB_WEBSOCKET_H_
Native WebSocket implementation using HTTP fallback.
void OnClose(CloseCallback callback) override
Set callback for connection close events.
void OnError(ErrorCallback callback) override
Set callback for error events.
void OnMessage(MessageCallback callback) override
Set callback for text message events.
std::atomic< bool > stop_receive_
absl::Status Connect(const std::string &url) override
Connect to a WebSocket server.
absl::Status Send(const std::string &message) override
Send a text message.
absl::Status ParseWebSocketUrl(const std::string &ws_url, std::string &http_url)
Parse WebSocket URL into HTTP components.
void OnOpen(OpenCallback callback) override
Set callback for connection open events.
absl::Status SendBinary(const uint8_t *data, size_t length) override
Send a binary message.
WebSocketState GetState() const override
Get the current connection state.
void OnBinaryMessage(BinaryMessageCallback callback) override
Set callback for binary message events.
void StopReceiveLoop()
Stop the receive loop.
absl::Status Close(int code=1000, const std::string &reason="") override
Close the WebSocket connection.
std::shared_ptr< httplib::Client > client_
void ReceiveLoop()
Background thread for receiving messages (polling)
Abstract interface for WebSocket client implementations.
std::function< void(const std::string &message)> MessageCallback
std::function< void(const std::string &error)> ErrorCallback
std::function< void(const uint8_t *data, size_t length)> BinaryMessageCallback
BinaryMessageCallback binary_message_callback_
MessageCallback message_callback_
std::function< void()> OpenCallback
std::function< void(int code, const std::string &reason)> CloseCallback
WebSocketState
WebSocket connection states.