OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
WebSocketClient Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/Utils/WebSocketClient.hpp>

Public Member Functions

 WebSocketClient ()
 ~WebSocketClient ()
void connect (const std::string &host, const std::string &port, const std::string &path="/")
void send (const std::string &message)
std::string receive (int timeout=0)

Private Attributes

boost::asio::io_context ioc_
boost::asio::ip::tcp::resolver resolver_
boost::beast::websocket::stream< boost::asio::ip::tcp::socket > ws_
bool is_connect

Detailed Description

Constructor & Destructor Documentation

◆ WebSocketClient()

WebSocketClient::WebSocketClient ( )
inline
23 :
24 resolver_(ioc_), ws_(ioc_),is_connect(false) {
25
26 }
bool is_connect
Definition WebSocketClient.hpp:87
boost::asio::io_context ioc_
Definition WebSocketClient.hpp:84
boost::asio::ip::tcp::resolver resolver_
Definition WebSocketClient.hpp:85
boost::beast::websocket::stream< boost::asio::ip::tcp::socket > ws_
Definition WebSocketClient.hpp:86

References ioc_, is_connect, resolver_, and ws_.

◆ ~WebSocketClient()

WebSocketClient::~WebSocketClient ( )
inline
28 {
29 if(!is_connect){
30 return;
31 }
32 try {
33 // Close the WebSocket connection
34 ws_.close(boost::beast::websocket::close_code::normal);
35 } catch (const std::exception& e) {
36 std::cerr << "Error: " << e.what() << std::endl;
37 }
38 }

References is_connect, and ws_.

Member Function Documentation

◆ connect()

void WebSocketClient::connect ( const std::string & host,
const std::string & port,
const std::string & path = "/" )
inline
39 {
40 if(is_connect){
41 return;
42 }
43 // Look up the domain name
44 auto const results = resolver_.resolve(host, port);
45
46 // Make the connection on the IP address we get from a lookup
47 auto ep = boost::asio::connect(ws_.next_layer(), results);
48 std::string _host = host;
49 //if _host last char is '/', remove it
50 if(_host.size()>0&&_host[host.size()-1] == '/'){
51 _host[host.size()-1] = '\0';
52 }
53
54 // _host += ':' + std::to_string(ep.port());
55 // Set a decorator to change the User-Agent of the handshake
56 ws_.set_option(boost::beast::websocket::stream_base::decorator(
57 [](boost::beast::websocket::request_type& req)
58 {
59 req.set(boost::beast::http::field::user_agent,"ElegooSlicer");
60 }));
61 // Perform the WebSocket handshake
62 ws_.handshake(_host, path);
63 is_connect = true;
64 }

References is_connect, resolver_, and ws_.

◆ receive()

std::string WebSocketClient::receive ( int timeout = 0)
inline
71 {
72 // This buffer will hold the incoming message
73 boost::beast::flat_buffer buffer;
74
75 // Read a message into our buffer
76 ws_.read(buffer);
77
78 // Return the message as a string
79 return boost::beast::buffers_to_string(buffer.data());
80 }

References ws_.

◆ send()

void WebSocketClient::send ( const std::string & message)
inline
66 {
67 // Send a message
68 ws_.write(boost::asio::buffer(message));
69 }

References ws_.

Member Data Documentation

◆ ioc_

boost::asio::io_context WebSocketClient::ioc_
private

Referenced by WebSocketClient().

◆ is_connect

bool WebSocketClient::is_connect
private

◆ resolver_

boost::asio::ip::tcp::resolver WebSocketClient::resolver_
private

Referenced by WebSocketClient(), and connect().

◆ ws_

boost::beast::websocket::stream<boost::asio::ip::tcp::socket> WebSocketClient::ws_
private

The documentation for this class was generated from the following file: