no message
This commit is contained in:
parent
e915fb1447
commit
3a3887a763
@ -130,7 +130,6 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
// delete mRightShow;
|
// delete mRightShow;
|
||||||
mRightShow = nullptr;
|
mRightShow = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uMsg == WM_USER_TCP_SERVER_CLOSE) {
|
if (uMsg == WM_USER_TCP_SERVER_CLOSE) {
|
||||||
wprintf(L"close %s\r\n", ((wstring*)wParam)->c_str());
|
wprintf(L"close %s\r\n", ((wstring*)wParam)->c_str());
|
||||||
mRightShow->SetVisible(false);
|
mRightShow->SetVisible(false);
|
||||||
@ -154,7 +153,6 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (uMsg == WM_USER_POS_CHANGED) {
|
if (uMsg == WM_USER_POS_CHANGED) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uMsg == WM_ADD_TCPCLIENT_MONITOR) {
|
if (uMsg == WM_ADD_TCPCLIENT_MONITOR) {
|
||||||
TcpClientInfo* info = (TcpClientInfo*)wParam;
|
TcpClientInfo* info = (TcpClientInfo*)wParam;
|
||||||
TcpClientLibevent* cli = (TcpClientLibevent*)lParam;
|
TcpClientLibevent* cli = (TcpClientLibevent*)lParam;
|
||||||
@ -212,7 +210,6 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (mWebsocketClientForm.find(info->ip) == mWebsocketClientForm.end())
|
if (mWebsocketClientForm.find(info->ip) == mWebsocketClientForm.end())
|
||||||
{
|
{
|
||||||
WebsocketClient* client = (WebsocketClient*)lParam;
|
WebsocketClient* client = (WebsocketClient*)lParam;
|
||||||
|
|
||||||
auto form = new WebsocketClientForm(this, wstring2string(info->ip),client);
|
auto form = new WebsocketClientForm(this, wstring2string(info->ip),client);
|
||||||
form->SetChildLayoutXML(L"basic/tcp_server_form.xml");
|
form->SetChildLayoutXML(L"basic/tcp_server_form.xml");
|
||||||
form->SetName(key);
|
form->SetName(key);
|
||||||
@ -226,10 +223,28 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (ui::EventType::kEventSelect == ev->Type) {
|
if (ui::EventType::kEventSelect == ev->Type) {
|
||||||
wprintf(L"%s\r\n", dynamic_cast<ui::TreeNode*> (ev->pSender)->GetText().c_str());
|
wprintf(L"%s\r\n", dynamic_cast<ui::TreeNode*> (ev->pSender)->GetText().c_str());
|
||||||
printf("GetCurSel %d\r\n", mRightSide->GetCurSel());
|
printf("GetCurSel %d\r\n", mRightSide->GetCurSel());
|
||||||
|
}
|
||||||
|
WebsocketClientForm* p = mWebsocketClientForm[dynamic_cast<ui::TreeNode*> (ev->pSender)->GetText()];
|
||||||
|
if (p != nullptr) {
|
||||||
|
printf("GetCurSel %d\r\n", mRightSide->GetCurSel());
|
||||||
|
p->SetAutoDestroy(true);
|
||||||
|
if (mRightShow != nullptr) {
|
||||||
|
mRightShow->SetVisible(false);
|
||||||
|
p->SetVisible(true);
|
||||||
|
mRightShow = p;
|
||||||
|
wprintf(L"%s", p->GetName());
|
||||||
|
mRightSide->SelectItem(p->GetName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
wprintf(L"%s", p->GetName());
|
||||||
|
p->SetVisible(true);
|
||||||
|
mRightSide->SelectItem(p->GetName());
|
||||||
|
mRightShow = p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (uMsg == WM_ADD_TCPSERVER_MONITOR) {
|
if (uMsg == WM_ADD_TCPSERVER_MONITOR) {
|
||||||
TcpServerInfo* info = (TcpServerInfo*)wParam;
|
TcpServerInfo* info = (TcpServerInfo*)wParam;
|
||||||
@ -427,7 +442,6 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p->SetVisible(true);
|
p->SetVisible(true);
|
||||||
|
|
||||||
mRightSide->SelectItem(p->GetName());
|
mRightSide->SelectItem(p->GetName());
|
||||||
mRightShow = p;
|
mRightShow = p;
|
||||||
}
|
}
|
||||||
@ -489,15 +503,12 @@ void BasicForm::InitWindow(){
|
|||||||
node->SetFixedHeight(30);
|
node->SetFixedHeight(30);
|
||||||
mMonitor->GetRootNode()->AddChildNode(node);
|
mMonitor->GetRootNode()->AddChildNode(node);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
node = new ui::TreeNode;
|
node = new ui::TreeNode;
|
||||||
node->SetText(nbase::StringPrintf(L"udp group"));
|
node->SetText(nbase::StringPrintf(L"udp group"));
|
||||||
node->SetClass(L"list_topitem");
|
node->SetClass(L"list_topitem");
|
||||||
node->SetFixedHeight(30);
|
node->SetFixedHeight(30);
|
||||||
mMonitor->GetRootNode()->AddChildNode(node);
|
mMonitor->GetRootNode()->AddChildNode(node);
|
||||||
|
|
||||||
|
|
||||||
node = new ui::TreeNode;
|
node = new ui::TreeNode;
|
||||||
node->SetText(nbase::StringPrintf(L"websocket client"));
|
node->SetText(nbase::StringPrintf(L"websocket client"));
|
||||||
node->SetClass(L"list_topitem");
|
node->SetClass(L"list_topitem");
|
||||||
|
@ -11,245 +11,256 @@ void on_message(WebsocketClient* c, websocketpp::connection_hdl hdl, message_ptr
|
|||||||
if (ec) {
|
if (ec) {
|
||||||
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
||||||
}
|
}
|
||||||
if (c->m_onread != nullptr) {
|
if (c->m_onread != nullptr) {
|
||||||
c->m_onread(c,msg->get_payload());
|
c->m_onread(c, msg->get_payload());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int WebsocketClient::SendMsg(const char * str,uint32_t len,
|
int WebsocketClient::SendMsg(const char* str, uint32_t len,
|
||||||
websocketpp::frame::opcode::value opcode)
|
websocketpp::frame::opcode::value opcode)
|
||||||
{
|
{
|
||||||
if(this->m_status != WebsocketClient::CONNECTED)
|
if (this->m_status != WebsocketClient::CONNECTED)
|
||||||
return -1;
|
return -1;
|
||||||
if(m_tls){
|
if (m_tls) {
|
||||||
websocketpp::lib::error_code ec;
|
websocketpp::lib::error_code ec;
|
||||||
this->m_client_tls.send(m_conn_tls,str,len,opcode,ec);
|
this->m_client_tls.send(m_conn_tls, str, len, opcode, ec);
|
||||||
if (ec) {
|
if (ec) {
|
||||||
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
websocketpp::lib::error_code ec;
|
else {
|
||||||
this->m_client.send(m_conn,str,len,opcode,ec);
|
websocketpp::lib::error_code ec;
|
||||||
if (ec) {
|
this->m_client.send(m_conn, str, len, opcode, ec);
|
||||||
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
if (ec) {
|
||||||
return -1;
|
std::cout << "Echo failed because: " << ec.message() << std::endl;
|
||||||
}
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void on_open(WebsocketClient * c, websocketpp::connection_hdl hdl) {
|
void on_open(WebsocketClient* c, websocketpp::connection_hdl hdl) {
|
||||||
if(c->m_tls){
|
if (c->m_tls) {
|
||||||
TlsClient::connection_ptr con = c->m_client_tls.get_con_from_hdl(hdl);
|
TlsClient::connection_ptr con = c->m_client_tls.get_con_from_hdl(hdl);
|
||||||
uint32_t usocket = con->get_raw_socket().native_handle();
|
uint32_t usocket = con->get_raw_socket().native_handle();
|
||||||
auto m_server = con->get_response_header("Server");
|
auto m_server = con->get_response_header("Server");
|
||||||
std::cout<<"open from server"<<m_server<<std::endl;
|
std::cout << "open from server" << m_server << std::endl;
|
||||||
c->m_status = WebsocketClient::CONNECTED;
|
c->m_status = WebsocketClient::CONNECTED;
|
||||||
if (c->m_on_connected != nullptr) {
|
if (c->m_on_connected != nullptr) {
|
||||||
c->m_on_connected(c);
|
c->m_on_connected(c);
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
Client::connection_ptr con = c->m_client.get_con_from_hdl(hdl);
|
else {
|
||||||
uint32_t usocket = con->get_raw_socket().native_handle();
|
Client::connection_ptr con = c->m_client.get_con_from_hdl(hdl);
|
||||||
auto m_server = con->get_response_header("Server");
|
uint32_t usocket = con->get_raw_socket().native_handle();
|
||||||
std::cout<<"open from server"<<m_server<<std::endl;
|
auto m_server = con->get_response_header("Server");
|
||||||
c->m_status = WebsocketClient::CONNECTED;
|
std::cout << "open from server" << m_server << std::endl;
|
||||||
if (c->m_on_connected != nullptr) {
|
c->m_status = WebsocketClient::CONNECTED;
|
||||||
c->m_on_connected(c);
|
if (c->m_on_connected != nullptr) {
|
||||||
}
|
c->m_on_connected(c);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void on_close(WebsocketClient * c, websocketpp::connection_hdl hdl) {
|
|
||||||
// m_status = "Open";
|
|
||||||
|
|
||||||
// client::connection_ptr con = c->get_con_from_hdl(hdl);
|
void on_close(WebsocketClient* c, websocketpp::connection_hdl hdl) {
|
||||||
// m_server = con->get_response_header("Server");
|
// m_status = "Open";
|
||||||
c->m_status = WebsocketClient::CLOSED;
|
|
||||||
std::cout<<"on_close"<<std::endl;
|
// client::connection_ptr con = c->get_con_from_hdl(hdl);
|
||||||
if (c->m_on_disconnected != nullptr) {
|
// m_server = con->get_response_header("Server");
|
||||||
c->m_on_disconnected(c,WebsocketClient::CloseReason::LOCAL_CLOSED);
|
c->m_status = WebsocketClient::CLOSED;
|
||||||
}
|
std::cout << "on_close" << std::endl;
|
||||||
|
if (c->m_on_disconnected != nullptr) {
|
||||||
|
c->m_on_disconnected(c, WebsocketClient::CloseReason::LOCAL_CLOSED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_fail(WebsocketClient * c, websocketpp::connection_hdl hdl) {
|
void on_fail(WebsocketClient* c, websocketpp::connection_hdl hdl) {
|
||||||
std::cout<<"on_fail"<<std::endl;
|
std::cout << "on_fail" << std::endl;
|
||||||
Client::connection_ptr con = c->m_client.get_con_from_hdl(hdl);
|
Client::connection_ptr con = c->m_client.get_con_from_hdl(hdl);
|
||||||
auto state = con->get_state();
|
auto state = con->get_state();
|
||||||
if(state == websocketpp::session::state::closed)
|
if (state == websocketpp::session::state::closed)
|
||||||
std::cout<<state <<" on_fail "<<std::endl;
|
std::cout << state << " on_fail " << std::endl;
|
||||||
c->m_status = WebsocketClient::FAIL;
|
c->m_status = WebsocketClient::FAIL;
|
||||||
if (c->m_on_disconnected != nullptr) {
|
if (c->m_on_disconnected != nullptr) {
|
||||||
c->m_on_disconnected(c,WebsocketClient::CloseReason::PEER_CLOSED);
|
c->m_on_disconnected(c, WebsocketClient::CloseReason::PEER_CLOSED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WebsocketClient::~WebsocketClient(){
|
WebsocketClient::~WebsocketClient() {
|
||||||
|
|
||||||
this->m_status = WebsocketClient::STOP;
|
this->m_status = WebsocketClient::STOP;
|
||||||
m_client.stop();
|
m_client.stop();
|
||||||
m_thread->join();
|
m_thread->join();
|
||||||
}
|
}
|
||||||
|
|
||||||
WebsocketClient::WebsocketClient(std::string url,bool tls)
|
WebsocketClient::WebsocketClient(std::string url, bool tls)
|
||||||
{
|
{
|
||||||
m_tls = tls;
|
m_tls = tls;
|
||||||
m_auto_reconn = false;
|
m_auto_reconn = false;
|
||||||
m_url = url;
|
m_url = url;
|
||||||
if(m_tls){
|
this->m_status = WebsocketClient::CONNECTING;
|
||||||
// Set logging to be pretty verbose (everything except message payloads)
|
|
||||||
m_client_tls.set_access_channels(websocketpp::log::alevel::all);
|
if (m_tls) {
|
||||||
m_client_tls.clear_access_channels(websocketpp::log::alevel::frame_payload);
|
// Set logging to be pretty verbose (everything except message payloads)
|
||||||
m_client_tls.set_tls_init_handler([this](websocketpp::connection_hdl){
|
m_client_tls.set_access_channels(websocketpp::log::alevel::all);
|
||||||
return websocketpp::lib::make_shared<asio::ssl::context>(asio::ssl::context::tlsv1);
|
m_client_tls.clear_access_channels(websocketpp::log::alevel::frame_payload);
|
||||||
});
|
m_client_tls.set_tls_init_handler([this](websocketpp::connection_hdl) {
|
||||||
// Initialize ASIO
|
return websocketpp::lib::make_shared<asio::ssl::context>(asio::ssl::context::tlsv1);
|
||||||
m_client_tls.init_asio();
|
});
|
||||||
m_thread = new std::thread([this]()
|
// Initialize ASIO
|
||||||
{
|
m_client_tls.init_asio();
|
||||||
while (this->m_status != STOP)
|
m_thread = new std::thread([this]()
|
||||||
{
|
{
|
||||||
m_client_tls.set_message_handler(bind(&on_message, this, ::_1, ::_2));
|
while (this->m_status != STOP)
|
||||||
websocketpp::lib::error_code ec;
|
{
|
||||||
std::cout<<"1"<<std::endl;
|
m_client_tls.set_message_handler(bind(&on_message, this, ::_1, ::_2));
|
||||||
m_conn_tls = m_client_tls.get_connection(this->m_url, ec);
|
websocketpp::lib::error_code ec;
|
||||||
m_conn_tls->set_open_handler(websocketpp::lib::bind(
|
std::cout << "1" << std::endl;
|
||||||
&on_open,
|
m_conn_tls = m_client_tls.get_connection(this->m_url, ec);
|
||||||
this,
|
m_conn_tls->set_open_handler(websocketpp::lib::bind(
|
||||||
websocketpp::lib::placeholders::_1
|
&on_open,
|
||||||
));
|
this,
|
||||||
m_conn_tls->set_fail_handler(websocketpp::lib::bind(
|
websocketpp::lib::placeholders::_1
|
||||||
&on_fail,
|
));
|
||||||
this,
|
m_conn_tls->set_fail_handler(websocketpp::lib::bind(
|
||||||
websocketpp::lib::placeholders::_1
|
&on_fail,
|
||||||
));
|
this,
|
||||||
m_conn_tls->set_close_handler(websocketpp::lib::bind(
|
websocketpp::lib::placeholders::_1
|
||||||
&on_close,
|
));
|
||||||
this,
|
m_conn_tls->set_close_handler(websocketpp::lib::bind(
|
||||||
websocketpp::lib::placeholders::_1
|
&on_close,
|
||||||
));
|
this,
|
||||||
if (ec) {
|
websocketpp::lib::placeholders::_1
|
||||||
std::cout << "could not create connection because: " << ec.message() << std::endl;
|
));
|
||||||
this->m_status = Status::FAIL;
|
if (ec) {
|
||||||
}
|
std::cout << "could not create connection because: " << ec.message() << std::endl;
|
||||||
std::cout<<"2"<<std::endl;
|
this->m_status = Status::FAIL;
|
||||||
|
}
|
||||||
// Note that connect here only requests a connection. No network messages are
|
std::cout << "2" << std::endl;
|
||||||
// exchanged until the event loop starts running in the next line.
|
|
||||||
TlsClient::connection_ptr ptr = m_client_tls.connect(m_conn_tls);
|
// Note that connect here only requests a connection. No network messages are
|
||||||
if(ptr->get_state() != websocketpp::session::state::open)
|
// exchanged until the event loop starts running in the next line.
|
||||||
std::cout<<ptr->get_state() <<" websocketpp::session::state "<<std::endl;
|
TlsClient::connection_ptr ptr = m_client_tls.connect(m_conn_tls);
|
||||||
// Start the ASIO io_service run loop
|
if (ptr->get_state() != websocketpp::session::state::open)
|
||||||
// this will cause a single connection to be made to the server. c.run()
|
std::cout << ptr->get_state() << " websocketpp::session::state " << std::endl;
|
||||||
// will exit when this connection is closed.
|
// Start the ASIO io_service run loop
|
||||||
std::cout<<"3 " << ptr << " " <<m_conn_tls <<std::endl;
|
// this will cause a single connection to be made to the server. c.run()
|
||||||
this->m_status = WebsocketClient::CONNECTING;
|
// will exit when this connection is closed.
|
||||||
while((this->m_status != WebsocketClient::FAIL) &&
|
std::cout << "3 " << ptr << " " << m_conn_tls << std::endl;
|
||||||
(this->m_status != WebsocketClient::CLOSED)
|
this->m_status = WebsocketClient::CONNECTING;
|
||||||
&&(this->m_status != WebsocketClient::STOP)
|
while ((this->m_status != WebsocketClient::FAIL) &&
|
||||||
){
|
(this->m_status != WebsocketClient::CLOSED)
|
||||||
try{
|
&& (this->m_status != WebsocketClient::STOP)
|
||||||
// while(this->m_status == WebsocketClient::CONNECTED){
|
) {
|
||||||
int count_of_handler = this->m_client_tls.run();
|
try {
|
||||||
// std::cout<<"count_of_handler: " << count_of_handler<<std::endl;
|
// while(this->m_status == WebsocketClient::CONNECTED){
|
||||||
// }
|
int count_of_handler = this->m_client_tls.run();
|
||||||
// run应该只执行一次就会退出
|
// std::cout<<"count_of_handler: " << count_of_handler<<std::endl;
|
||||||
}catch(std::exception e){
|
// }
|
||||||
std::cout<< "run exception"<< e.what();
|
// run应该只执行一次就会退出
|
||||||
}
|
}
|
||||||
}
|
catch (std::exception e) {
|
||||||
Sleep(1000);
|
std::cout << "run exception" << e.what();
|
||||||
}
|
}
|
||||||
std::cout<<"close";
|
}
|
||||||
this->m_on_disconnected(this,WebsocketClient::CloseReason::LOCAL_CLOSED);
|
Sleep(1000);
|
||||||
});
|
}
|
||||||
}
|
std::cout << "close";
|
||||||
else{
|
this->m_on_disconnected(this, WebsocketClient::CloseReason::LOCAL_CLOSED);
|
||||||
// Set logging to be pretty verbose (everything except message payloads)
|
});
|
||||||
m_client.set_access_channels(websocketpp::log::alevel::all);
|
}
|
||||||
m_client.clear_access_channels(websocketpp::log::alevel::frame_payload);
|
else {
|
||||||
|
// Set logging to be pretty verbose (everything except message payloads)
|
||||||
|
m_client.set_access_channels(websocketpp::log::alevel::all);
|
||||||
|
m_client.clear_access_channels(websocketpp::log::alevel::frame_payload);
|
||||||
|
|
||||||
|
// Initialize ASIO
|
||||||
|
this->m_client.init_asio();
|
||||||
|
m_thread = new std::thread([this]()
|
||||||
|
{
|
||||||
|
while (this->m_status != STOP)
|
||||||
|
{
|
||||||
|
this->m_client.set_message_handler(bind(&on_message, this, ::_1, ::_2));
|
||||||
|
websocketpp::lib::error_code ec;
|
||||||
|
std::cout << "1" << std::endl;
|
||||||
|
m_conn = m_client.get_connection(this->m_url, ec);
|
||||||
|
if (m_conn != nullptr) {
|
||||||
|
m_conn->set_open_handler(websocketpp::lib::bind(
|
||||||
|
&on_open,
|
||||||
|
this,
|
||||||
|
websocketpp::lib::placeholders::_1
|
||||||
|
));
|
||||||
|
m_conn->set_fail_handler(websocketpp::lib::bind(
|
||||||
|
&on_fail,
|
||||||
|
this,
|
||||||
|
websocketpp::lib::placeholders::_1
|
||||||
|
));
|
||||||
|
m_conn->set_close_handler(websocketpp::lib::bind(
|
||||||
|
&on_close,
|
||||||
|
this,
|
||||||
|
websocketpp::lib::placeholders::_1
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if (ec) {
|
||||||
|
std::cout << "could not create connection because: " << ec.message() << std::endl;
|
||||||
|
this->m_status = Status::FAIL;
|
||||||
|
if (m_on_disconnected)
|
||||||
|
m_on_disconnected(this, WebsocketClient::CloseReason::LOCAL_CLOSED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
std::cout << "2" << std::endl;
|
||||||
|
|
||||||
|
// Note that connect here only requests a connection. No network messages are
|
||||||
|
// exchanged until the event loop starts running in the next line.
|
||||||
|
Client::connection_ptr ptr = this->m_client.connect(m_conn);
|
||||||
|
if (ptr->get_state() != websocketpp::session::state::open)
|
||||||
|
std::cout << ptr->get_state() << " websocketpp::session::state " << std::endl;
|
||||||
|
// Start the ASIO io_service run loop
|
||||||
|
// this will cause a single connection to be made to the server. c.run()
|
||||||
|
// will exit when this connection is closed.
|
||||||
|
std::cout << "3 " << ptr << " " << m_conn_tls << std::endl;
|
||||||
|
this->m_status = WebsocketClient::CONNECTING;
|
||||||
|
while ((this->m_status != WebsocketClient::FAIL) &&
|
||||||
|
(this->m_status != WebsocketClient::CLOSED)
|
||||||
|
&& (this->m_status != WebsocketClient::STOP)
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
// while(this->m_status == WebsocketClient::CONNECTED){
|
||||||
|
int count_of_handler = this->m_client.run();
|
||||||
|
// std::cout<<"count_of_handler: " << count_of_handler<<std::endl;
|
||||||
|
// }
|
||||||
|
// run应该只执行一次就会退出
|
||||||
|
}
|
||||||
|
catch (std::exception e) {
|
||||||
|
std::cout << "run exception" << e.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Sleep(1000);
|
||||||
|
}
|
||||||
|
std::cout << "close";
|
||||||
|
if(m_on_disconnected)
|
||||||
|
m_on_disconnected(this, WebsocketClient::CloseReason::LOCAL_CLOSED);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize ASIO
|
|
||||||
this->m_client.init_asio();
|
|
||||||
m_thread = new std::thread([this]()
|
|
||||||
{
|
|
||||||
while (this->m_status != STOP)
|
|
||||||
{
|
|
||||||
this->m_client.set_message_handler(bind(&on_message, this, ::_1, ::_2));
|
|
||||||
websocketpp::lib::error_code ec;
|
|
||||||
std::cout<<"1"<<std::endl;
|
|
||||||
m_conn = m_client.get_connection(this->m_url, ec);
|
|
||||||
m_conn->set_open_handler(websocketpp::lib::bind(
|
|
||||||
&on_open,
|
|
||||||
this,
|
|
||||||
websocketpp::lib::placeholders::_1
|
|
||||||
));
|
|
||||||
m_conn->set_fail_handler(websocketpp::lib::bind(
|
|
||||||
&on_fail,
|
|
||||||
this,
|
|
||||||
websocketpp::lib::placeholders::_1
|
|
||||||
));
|
|
||||||
m_conn->set_close_handler(websocketpp::lib::bind(
|
|
||||||
&on_close,
|
|
||||||
this,
|
|
||||||
websocketpp::lib::placeholders::_1
|
|
||||||
));
|
|
||||||
if (ec) {
|
|
||||||
std::cout << "could not create connection because: " << ec.message() << std::endl;
|
|
||||||
this->m_status = Status::FAIL;
|
|
||||||
}
|
|
||||||
std::cout<<"2"<<std::endl;
|
|
||||||
|
|
||||||
// Note that connect here only requests a connection. No network messages are
|
|
||||||
// exchanged until the event loop starts running in the next line.
|
|
||||||
Client::connection_ptr ptr = this->m_client.connect(m_conn);
|
|
||||||
if(ptr->get_state() != websocketpp::session::state::open)
|
|
||||||
std::cout<<ptr->get_state() <<" websocketpp::session::state "<<std::endl;
|
|
||||||
// Start the ASIO io_service run loop
|
|
||||||
// this will cause a single connection to be made to the server. c.run()
|
|
||||||
// will exit when this connection is closed.
|
|
||||||
std::cout<<"3 " << ptr << " " <<m_conn_tls <<std::endl;
|
|
||||||
this->m_status = WebsocketClient::CONNECTING;
|
|
||||||
while((this->m_status != WebsocketClient::FAIL) &&
|
|
||||||
(this->m_status != WebsocketClient::CLOSED)
|
|
||||||
&&(this->m_status != WebsocketClient::STOP)
|
|
||||||
){
|
|
||||||
try{
|
|
||||||
// while(this->m_status == WebsocketClient::CONNECTED){
|
|
||||||
int count_of_handler = this->m_client.run();
|
|
||||||
// std::cout<<"count_of_handler: " << count_of_handler<<std::endl;
|
|
||||||
// }
|
|
||||||
// run应该只执行一次就会退出
|
|
||||||
}catch(std::exception e){
|
|
||||||
std::cout<< "run exception"<< e.what();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Sleep(1000);
|
|
||||||
}
|
|
||||||
std::cout<<"close";
|
|
||||||
this->m_on_disconnected(this,WebsocketClient::CloseReason::LOCAL_CLOSED);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebsocketClient::SetOnConnectedHandler(OnConnectedHandler on_connected){
|
int WebsocketClient::SetOnConnectedHandler(OnConnectedHandler on_connected) {
|
||||||
this->m_on_connected = on_connected;
|
this->m_on_connected = on_connected;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebsocketClient::SetOnDisConnectedHandler(OnDisConnectedHandler on_disconnected){
|
int WebsocketClient::SetOnDisConnectedHandler(OnDisConnectedHandler on_disconnected) {
|
||||||
this->m_on_disconnected = on_disconnected;
|
this->m_on_disconnected = on_disconnected;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebsocketClient::SetOnReadHandler(OnReadHandler onread){
|
int WebsocketClient::SetOnReadHandler(OnReadHandler onread) {
|
||||||
this->m_onread = onread;
|
this->m_onread = onread;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "websocket_client_form.h"
|
#include "websocket_client_form.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
WebsocketClientForm::WebsocketClientForm(ui::Window* hwnd, string url, WebsocketClient* p)
|
WebsocketClientForm::WebsocketClientForm(ui::Window* hwnd, string url, WebsocketClient* p)
|
||||||
{
|
{
|
||||||
@ -28,26 +29,24 @@ void WebsocketClientForm::Init()
|
|||||||
m_btn_close_form = dynamic_cast<ui::Button*>(FindSubControl(L"btn_close_uart"));
|
m_btn_close_form = dynamic_cast<ui::Button*>(FindSubControl(L"btn_close_uart"));
|
||||||
|
|
||||||
if (nullptr != m_btn_close_form)
|
if (nullptr != m_btn_close_form)
|
||||||
m_btn_close_form->AttachClick([this](const ui::EventArgs *ev) {
|
m_btn_close_form->AttachClick([this](const ui::EventArgs* ev) {
|
||||||
|
|
||||||
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
);
|
||||||
);
|
|
||||||
if(nullptr != m_btn_save_lua)
|
if(nullptr != m_btn_save_lua)
|
||||||
m_btn_save_lua->AttachClick(
|
m_btn_save_lua->AttachClick(
|
||||||
[this](ui::EventArgs* ev)
|
[this](ui::EventArgs* ev){
|
||||||
{
|
|
||||||
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
);
|
||||||
);
|
|
||||||
if (nullptr != m_btn_send_data) {
|
if (nullptr != m_btn_send_data) {
|
||||||
m_btn_send_data->AttachClick([this](const ui::EventArgs* ev) {
|
m_btn_send_data->AttachClick([this](const ui::EventArgs* ev) {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,5 +57,5 @@ LuaDelegate* WebsocketClientForm::LuaVM()
|
|||||||
|
|
||||||
void WebsocketClientForm::ShowDataInEdit(const char*src)
|
void WebsocketClientForm::ShowDataInEdit(const char*src)
|
||||||
{
|
{
|
||||||
|
m_rich_edit_1->AppendText(string2wstring(std::string(src)),false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user