Skylicht Engine
Loading...
Searching...
No Matches
CSocketIO.h
1#pragma once
2
3#include "pch.h"
4
5#include "HttpRequest/IHttpRequest.h"
6#include "SocketIO/IWebsocket.h"
7#include <functional>
8
9namespace Skylicht
10{
11 namespace Network
12 {
13 class CSocketIO
14 {
15 public:
16 enum EConnectState
17 {
18 None,
19 RequestSocketIO,
20 UpdateSocket,
21 Closed
22 };
23
24 protected:
25 std::string m_url;
26 std::string m_wsURL;
27 std::string m_wsOriginURL;
28
29 IHttpRequest* m_httpRequest;
30
31 std::queue<std::string> m_sendData;
32 float m_sendTimeout;
33
34 EConnectState m_state;
35
36 char* m_bufferData;
37
38 IWebsocket* m_ws;
39
40 bool m_connected;
41
42 std::string m_socketID;
43
44 public:
45
46 std::function<void()> OnConnected;
47 std::function<void()> OnDisconnected;
48 std::function<void()> OnConnectFailed;
49 std::function<void(const std::string&)> OnMessage;
50 std::function<void(const std::string&, int)> OnMessageAsk;
51
52 public:
53 CSocketIO(const char* url);
54
55 virtual ~CSocketIO();
56
57 void update();
58
59 void forceSend();
60
61 void init();
62
63 bool startServices();
64
65 void setWSURL(const char* ws)
66 {
67 m_wsURL = ws;
68 }
69
70 void setOriginURL(const char* ws)
71 {
72 m_wsOriginURL = ws;
73 }
74
75 void setSocketID(const char* id)
76 {
77 m_socketID = id;
78 }
79
80 const char* getSocketID()
81 {
82 return m_socketID.c_str();
83 }
84
85 void sendMessage(const char* message);
86
87 void emit(const char* type, bool ack, int askID = 1);
88 void emit(const char* type, const char* param, const char* value, bool ack, int askID = 1);
89 void emit(const char* type, const char* param, const std::string& value, bool ack, int askID = 1);
90 void emit(const char* type, std::map<std::string, std::string>& params, bool ack, int askID = 1);
91
92 bool isConnected();
93
94 void onConnected();
95 void onDisconnected();
96 void onMessage(const std::string& msg);
97 void onMessageAsk(const std::string& msg, int id);
98
99 void updateRequest();
100
101 void close();
102
103 std::string toStringParam(const char* s);
104 std::string toStringParam(const std::string& s);
105
106 inline IWebsocket* getWebSocket()
107 {
108 return m_ws;
109 }
110 };
111 }
112}
Definition IHttpRequest.h:35
Definition IWebsocket.h:13
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition AudioDebugLog.h:29