WebsocketClient.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * WebsocketClient.h
8  *
9  * @authors:
10  * Originally - hrsavla <https://github.com/hrsavla>
11  * Refactored - Alexander V, Ribchansky <https://github.com/avr39-ripe>
12  * Refactored - Slavey Karadzhov <slav@attachix.com>
13  *
14  ****/
15 
16 //TODO: Add stream support for sending big chunks of data via websockets.
17 
18 #pragma once
19 
22 
32 {
33 public:
34  WebsocketClient(HttpConnection* connection = nullptr) : WebsocketConnection(connection)
35  {
36  }
37 
42 
44 
48  bool connect(const Url& url);
49 
53 
60  void sendPing(const String& payload = nullptr)
61  {
62  debug_d("Sending PING");
63  WebsocketConnection::send(payload.c_str(), payload.length(), WS_FRAME_PING);
64  }
65 
71  void sendPong(const String& payload = nullptr)
72  {
73  debug_d("Sending PONG");
74  WebsocketConnection::send(payload.c_str(), payload.length(), WS_FRAME_PONG);
75  }
76 
79 
85  {
86  sslInitHandler = handler;
87  }
88 
89 protected:
90  int verifyKey(HttpConnection& connection, HttpResponse& response);
91 
92 private:
93  Url uri;
94  String key;
95  Ssl::Session::InitDelegate sslInitHandler;
96 };
97 
Provides http base used for client and server connections.
Definition: HttpConnection.h:28
Represents either an incoming or outgoing response to a HTTP request.
Definition: HttpResponse.h:26
The String class.
Definition: WString.h:137
Class to manage URL instance.
Definition: Url.h:67
Websocket Client.
Definition: WebsocketClient.h:32
WebsocketClient(HttpConnection *connection=nullptr)
Definition: WebsocketClient.h:34
void sendPong(const String &payload=nullptr)
Send websocket ping to server.
Definition: WebsocketClient.h:71
bool connect(const Url &url)
Connects websocket client to server.
void sendPing(const String &payload=nullptr)
Send websocket ping to server.
Definition: WebsocketClient.h:60
int verifyKey(HttpConnection &connection, HttpResponse &response)
HttpConnection * getHttpConnection()
void setSslInitHandler(Ssl::Session::InitDelegate handler)
Set the SSL session initialisation callback.
Definition: WebsocketClient.h:84
Definition: WebsocketConnection.h:62
bool send(const char *message, size_t length, ws_frame_type_t type=WS_FRAME_TEXT)
Sends a websocket message from a buffer.
WsConnectionState getState()
Gets the state of the websocket connection.
Definition: WebsocketConnection.h:272
void close()
Closes a websocket connection (without closing the underlying http connection)
void setBinaryHandler(WebsocketBinaryDelegate handler)
Sets the callback handler to be called after a binary websocket message is received.
Definition: WebsocketConnection.h:220
bool sendBinary(const uint8_t *data, size_t length)
Sends a binary websocket message.
Definition: WebsocketConnection.h:146
void setDisconnectionHandler(WebsocketDelegate handler)
Sets the callback handler to be called before closing a websocket connection.
Definition: WebsocketConnection.h:236
void setMessageHandler(WebsocketMessageDelegate handler)
Sets the callback handler to be called after a websocket message is received.
Definition: WebsocketConnection.h:211
void setConnectionHandler(WebsocketDelegate handler)
Sets the callback handler to be called after successful websocket connection.
Definition: WebsocketConnection.h:202
bool sendString(const String &message)
Sends a string websocket message.
Definition: WebsocketConnection.h:136
#define debug_d
Definition: debug_progmem.h:100