From f458f77e0bdd60014dedffda506a04be58185f13 Mon Sep 17 00:00:00 2001
From: zcy <290198252@qq.com>
Date: Wed, 23 Feb 2022 00:13:30 +0800
Subject: [PATCH] no message
---
.../themes/default/basic/newmonitor.xml | 12 +--
examples/proto_debuger/base_form.cpp | 13 +++
examples/proto_debuger/new_monitor_form.cpp | 16 +++
examples/proto_debuger/proto_debuger.vcxproj | 4 +-
.../proto_debuger/tcp_server_libevent.cpp | 9 +-
examples/proto_debuger/websocket_client.cpp | 98 +++++++++++++++++++
examples/proto_debuger/websocket_client.h | 7 ++
7 files changed, 149 insertions(+), 10 deletions(-)
create mode 100644 examples/proto_debuger/websocket_client.cpp
create mode 100644 examples/proto_debuger/websocket_client.h
diff --git a/examples/Debug/resources/themes/default/basic/newmonitor.xml b/examples/Debug/resources/themes/default/basic/newmonitor.xml
index f49310ad..26d749bb 100644
--- a/examples/Debug/resources/themes/default/basic/newmonitor.xml
+++ b/examples/Debug/resources/themes/default/basic/newmonitor.xml
@@ -6,30 +6,30 @@
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/examples/proto_debuger/base_form.cpp b/examples/proto_debuger/base_form.cpp
index fce48815..136885bd 100644
--- a/examples/proto_debuger/base_form.cpp
+++ b/examples/proto_debuger/base_form.cpp
@@ -466,6 +466,19 @@ void BasicForm::InitWindow(){
node->SetClass(L"list_topitem");
node->SetFixedHeight(30);
mMonitor->GetRootNode()->AddChildNode(node);
+
+
+ node = new ui::TreeNode;
+ node->SetText(nbase::StringPrintf(L"websocket client"));
+ node->SetClass(L"list_topitem");
+ node->SetFixedHeight(30);
+ mMonitor->GetRootNode()->AddChildNode(node);
+
+ node = new ui::TreeNode;
+ node->SetText(nbase::StringPrintf(L"websocket server"));
+ node->SetClass(L"list_topitem");
+ node->SetFixedHeight(30);
+ mMonitor->GetRootNode()->AddChildNode(node);
}
mRightSide = dynamic_cast(FindControl(L"tab_side"));
diff --git a/examples/proto_debuger/new_monitor_form.cpp b/examples/proto_debuger/new_monitor_form.cpp
index 03b2b3e0..f040a0ea 100644
--- a/examples/proto_debuger/new_monitor_form.cpp
+++ b/examples/proto_debuger/new_monitor_form.cpp
@@ -264,6 +264,22 @@ void NewMonitorForm::InitWindow()
element->SetTextPadding({ 6,0,6,0 });
element->SetText(nbase::StringPrintf(L"udp group"));
m_combo_type->Add(element);
+
+ element = new ui::ListContainerElement;
+ element->SetClass(L"listitem");
+ element->SetFixedHeight(30);
+ element->SetBkColor(L"white");
+ element->SetTextPadding({ 6,0,6,0 });
+ element->SetText(nbase::StringPrintf(L"websocket server"));
+ m_combo_type->Add(element);
+
+ element = new ui::ListContainerElement;
+ element->SetClass(L"listitem");
+ element->SetFixedHeight(30);
+ element->SetBkColor(L"white");
+ element->SetTextPadding({ 6,0,6,0 });
+ element->SetText(nbase::StringPrintf(L"websocket client"));
+ m_combo_type->Add(element);
}
m_ip_config_vbox = dynamic_cast(FindControl(L"ip_config"));
m_uart_config_vbox = dynamic_cast(FindControl(L"uart_config"));
diff --git a/examples/proto_debuger/proto_debuger.vcxproj b/examples/proto_debuger/proto_debuger.vcxproj
index e76ad73d..0c0ccbcb 100644
--- a/examples/proto_debuger/proto_debuger.vcxproj
+++ b/examples/proto_debuger/proto_debuger.vcxproj
@@ -81,7 +81,7 @@
true
- $(VC_IncludePath);$(WindowsSDK_IncludePath);..\..\;$(ProjectDir)third\include\libevent\include;$(ProjectDir);$(ProjectDir)third\include\lua
+ $(VC_IncludePath);$(WindowsSDK_IncludePath);..\..\;$(ProjectDir)third\include\libevent\include;$(ProjectDir);$(ProjectDir)third\include\lua;$(ProjectDir)third\include\boost171;$(ProjectDir)third\include\
$(ReferencePath)
$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(ProjectDir)third\lib
@@ -179,6 +179,7 @@
+
@@ -198,6 +199,7 @@
+
diff --git a/examples/proto_debuger/tcp_server_libevent.cpp b/examples/proto_debuger/tcp_server_libevent.cpp
index 807e817a..dd593516 100644
--- a/examples/proto_debuger/tcp_server_libevent.cpp
+++ b/examples/proto_debuger/tcp_server_libevent.cpp
@@ -16,11 +16,13 @@ void defaultConnRead(char* p, uint32_t len) {
class ServerCallbacks {
public:
- static void cb_listener(struct evconnlistener* listener, evutil_socket_t fd, struct sockaddr* addr, int len, void* ptr);
+ static void cb_listener(struct evconnlistener* listener,
+ evutil_socket_t fd, struct sockaddr* addr, int len, void* ptr);
static void server_run(TcpServerLibevent* p);
};
-ConnectionLibevent::ConnectionLibevent(TcpServerLibevent* p, struct bufferevent* ev, uint32_t fd, struct sockaddr_in* p1) :
+ConnectionLibevent::ConnectionLibevent(TcpServerLibevent* p,
+ struct bufferevent* ev, uint32_t fd, struct sockaddr_in* p1) :
m_parent_server(nullptr),
m_event(nullptr),
m_fd(-1),
@@ -33,7 +35,8 @@ ConnectionLibevent::ConnectionLibevent(TcpServerLibevent* p, struct bufferevent*
m_addr = p1;
}
-ConnectionLibevent::ConnectionLibevent(struct bufferevent* ev, uint32_t fd, struct sockaddr_in* p1) :
+ConnectionLibevent::ConnectionLibevent(struct bufferevent* ev,
+ uint32_t fd, struct sockaddr_in* p1) :
m_parent_server(nullptr),
m_event(nullptr),
m_fd(-1),
diff --git a/examples/proto_debuger/websocket_client.cpp b/examples/proto_debuger/websocket_client.cpp
new file mode 100644
index 00000000..af0e1a67
--- /dev/null
+++ b/examples/proto_debuger/websocket_client.cpp
@@ -0,0 +1,98 @@
+#include "websocket_client.h"
+#include "websocketpp/config/asio_no_tls_client.hpp"
+#include "websocketpp/client.hpp"
+#include
+
+typedef websocketpp::client client;
+
+using websocketpp::lib::placeholders::_1;
+using websocketpp::lib::placeholders::_2;
+using websocketpp::lib::bind;
+
+typedef websocketpp::config::asio_client::message_type::ptr message_ptr;
+
+void on_open(client* c, websocketpp::connection_hdl hdl)
+{
+ std::string msg = "hello";
+ c->send(hdl, msg, websocketpp::frame::opcode::text);
+ c->get_alog().write(websocketpp::log::alevel::app, "Tx: " + msg);
+}
+
+void on_message(client* c, websocketpp::connection_hdl hdl, message_ptr msg)
+{
+ std::cout << "on_message called with hdl: " << hdl.lock().get()
+ << " and message: " << msg->get_payload()
+ << std::endl;
+ websocketpp::lib::error_code ec;
+ //c->send(hdl,msg->get_payload(),msg->get_opcode(),ec);
+ if (ec)
+ {
+ std::cout << "Echo failed because " << ec.message() << std::endl;
+ }
+}
+
+//ʱص
+void Timeout(client* c, websocketpp::connection_hdl& hdl, boost::asio::deadline_timer* pt, const boost::system::error_code& ec)
+{
+ if (ec)
+ {
+ std::cout << "timer is cancel " << std::endl;
+ return;
+ }
+ static int count = 0;
+ c->send(hdl, "hello", websocketpp::frame::opcode::text);
+ count++;
+ if (count > 5)//ʱκر
+ {
+ c->close(hdl, websocketpp::close::status::normal, "");
+ return;
+ }
+ pt->expires_at(pt->expires_at() + boost::posix_time::seconds(5));
+ pt->async_wait(bind(Timeout, c, hdl, pt, ::_1));
+
+}
+
+
+
+int TestPoint(int argc, char* argv[])
+{
+ client c;
+
+ std::string uri = "ws://xx.xx.xx.xx:xxx";
+
+ c.set_access_channels(websocketpp::log::alevel::all);
+ c.clear_access_channels(websocketpp::log::alevel::frame_payload);
+ c.clear_access_channels(websocketpp::log::alevel::frame_header);
+
+ // ʼ ASIO
+ c.init_asio();
+
+ // עϢص
+
+ c.set_message_handler(bind(&on_message, &c, ::_1, ::_2));
+ c.set_open_handler(bind(&on_open, &c, _1));
+
+ websocketpp::lib::error_code ec;
+ client::connection_ptr con = c.get_connection(uri, ec);
+ con->add_subprotocol("janus-protocol");
+ if (ec)
+ {
+ std::cout << "could not create connection because: " << ec.message() << std::endl;
+ return 0;
+ }
+
+ auto hdl = con->get_handle();
+ c.connect(con);
+
+ boost::asio::deadline_timer t(c.get_io_service(), boost::posix_time::seconds(5)); //һ5sʱĶʱ
+ t.async_wait(bind(&Timeout, &c, hdl, &t, ::_1));
+
+ std::thread th([&c] { c.run(); });
+
+ //13sȡʱر
+ sleep(13);
+ t.cancel();
+ c.close(hdl, websocketpp::close::status::normal, "");
+
+ th.join();
+}
\ No newline at end of file
diff --git a/examples/proto_debuger/websocket_client.h b/examples/proto_debuger/websocket_client.h
new file mode 100644
index 00000000..0fc5e7a0
--- /dev/null
+++ b/examples/proto_debuger/websocket_client.h
@@ -0,0 +1,7 @@
+#pragma once
+
+class WebsocketClient
+{
+
+};
+