2022-03-03 23:22:08 +08:00
|
|
|
|
#include "websocket_client_form.h"
|
2022-03-09 17:12:36 +08:00
|
|
|
|
#include "utils.h"
|
2022-03-13 01:50:44 +08:00
|
|
|
|
#include "lua_bind.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define WEBSOCKET_CLIENT_LUA "websocket_client.lua"
|
2022-03-03 23:22:08 +08:00
|
|
|
|
|
2022-03-09 16:25:04 +08:00
|
|
|
|
WebsocketClientForm::WebsocketClientForm(ui::Window* hwnd, string url, WebsocketClient* p)
|
2022-03-03 23:22:08 +08:00
|
|
|
|
{
|
2022-03-09 16:25:04 +08:00
|
|
|
|
if (nullptr != hwnd) {
|
|
|
|
|
this->SetWindow(hwnd, nullptr, false);
|
|
|
|
|
}
|
|
|
|
|
mWebsocketClient = p;
|
|
|
|
|
|
2022-03-13 01:50:44 +08:00
|
|
|
|
mLua = new LuaDelegate;
|
|
|
|
|
mLuaFile.open(WEBSOCKET_CLIENT_LUA);
|
|
|
|
|
std::string lua_script;
|
|
|
|
|
if (mLuaFile.is_open()) {
|
|
|
|
|
std::string s;
|
|
|
|
|
while (getline(mLuaFile, s)) {
|
|
|
|
|
lua_script += s + "\r\n";
|
|
|
|
|
}
|
|
|
|
|
mLuaFile.close();
|
|
|
|
|
}
|
|
|
|
|
mLuaScript = lua_script;
|
|
|
|
|
mLua->DoString(lua_script);
|
|
|
|
|
this->mLua->BindFunction("showdata", LuaShowData);
|
|
|
|
|
|
2022-03-03 23:22:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WebsocketClientForm::~WebsocketClientForm()
|
|
|
|
|
{
|
2022-03-13 01:50:44 +08:00
|
|
|
|
std::cout << "~WebsocketClientForm"<<std::endl;
|
|
|
|
|
delete mWebsocketClient;
|
2022-03-11 00:33:50 +08:00
|
|
|
|
|
2022-03-03 23:22:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WebsocketClientForm::Init()
|
|
|
|
|
{
|
|
|
|
|
ui::ChildBox::Init();
|
2022-03-10 00:21:39 +08:00
|
|
|
|
m_label_1 = dynamic_cast<ui::Label*>(FindSubControl(L"server_info"));
|
2022-03-13 01:50:44 +08:00
|
|
|
|
m_rich_edit_1 = dynamic_cast<ui::RichEdit*>(FindSubControl(L"server_recv_edit"));
|
|
|
|
|
m_rich_edit_2 = dynamic_cast<ui::RichEdit*>(FindSubControl(L"lua_script_edit"));
|
|
|
|
|
|
|
|
|
|
m_rich_edit_2->SetRich(true);
|
|
|
|
|
m_rich_edit_2->SetReturnMsgWantCtrl(true);
|
|
|
|
|
|
|
|
|
|
m_rich_edit_2->SetText(string2wstring(mLuaScript));
|
|
|
|
|
|
|
|
|
|
m_websocket_send_edit = dynamic_cast<ui::RichEdit*>(FindSubControl(L"server_send_edit"));
|
2022-03-03 23:22:08 +08:00
|
|
|
|
m_btn_send_data = dynamic_cast<ui::Button*>(FindSubControl(L"btn_send_data"));
|
|
|
|
|
m_check_box_2 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_time_send"));
|
|
|
|
|
m_check_box_3 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_hex_send"));
|
|
|
|
|
m_check_box_4 = dynamic_cast<ui::CheckBox*>(FindSubControl(L"check_hex_recv"));
|
|
|
|
|
m_btn_save_lua = dynamic_cast<ui::Button*>(FindSubControl(L"btn_save_lua"));
|
|
|
|
|
m_btn_close_form = dynamic_cast<ui::Button*>(FindSubControl(L"btn_close_uart"));
|
2022-03-09 00:28:31 +08:00
|
|
|
|
|
2022-03-10 00:21:39 +08:00
|
|
|
|
if (nullptr != m_label_1) {
|
2022-03-11 00:33:50 +08:00
|
|
|
|
if (mWebsocketClient->State() == WebsocketClient::CONNECTED) {
|
2022-03-10 00:21:39 +08:00
|
|
|
|
m_label_1->SetText(std::wstring() + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " +
|
|
|
|
|
string2wstring(mWebsocketClient->Url()) + L"<EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>");
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
m_label_1->SetText(std::wstring() + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " +
|
|
|
|
|
string2wstring(mWebsocketClient->Url()) + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-03-13 01:50:44 +08:00
|
|
|
|
|
2022-03-09 16:25:04 +08:00
|
|
|
|
if (nullptr != m_btn_close_form)
|
2022-03-09 17:12:36 +08:00
|
|
|
|
m_btn_close_form->AttachClick([this](const ui::EventArgs* ev) {
|
2022-03-10 00:21:39 +08:00
|
|
|
|
wstring* name = new wstring(this->GetName());
|
|
|
|
|
::PostMessage(this->GetWindow()->GetHWND(),
|
|
|
|
|
WM_ADD_WEBSOCKET_CLIENT_CLOSE, (WPARAM)name, 0);
|
2022-03-09 17:12:36 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2022-03-09 16:25:04 +08:00
|
|
|
|
if(nullptr != m_btn_save_lua)
|
|
|
|
|
m_btn_save_lua->AttachClick(
|
2022-03-09 17:12:36 +08:00
|
|
|
|
[this](ui::EventArgs* ev){
|
2022-03-13 01:50:44 +08:00
|
|
|
|
std::cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>lua<EFBFBD>ű<EFBFBD>\r\n";
|
|
|
|
|
std::string lua = wstring2string(this->m_rich_edit_2->GetText());
|
|
|
|
|
if (0 == this->mLua->UpdateScript(lua)) {
|
|
|
|
|
this->mLuaScript = lua;
|
|
|
|
|
mLuaFileEdit = std::ofstream(WEBSOCKET_CLIENT_LUA, std::ios::out | std::ios::trunc);
|
|
|
|
|
mLuaFileEdit.write(lua.c_str(), lua.size());
|
|
|
|
|
mLuaFileEdit.flush();
|
|
|
|
|
mLuaFileEdit.close();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
MessageBox(0, L"lua<EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", L"", 0);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
std::cout << lua.c_str() << "\r\n";
|
|
|
|
|
return true;
|
2022-03-09 17:12:36 +08:00
|
|
|
|
}
|
|
|
|
|
);
|
2022-03-10 00:21:39 +08:00
|
|
|
|
|
2022-03-09 16:25:04 +08:00
|
|
|
|
if (nullptr != m_btn_send_data) {
|
|
|
|
|
m_btn_send_data->AttachClick([this](const ui::EventArgs* ev) {
|
2022-03-13 01:50:44 +08:00
|
|
|
|
this->mWebsocketClient->SendMsg(
|
|
|
|
|
wstring2string(m_websocket_send_edit->GetText()).c_str(),
|
|
|
|
|
wstring2string(m_websocket_send_edit->GetText()).size(),
|
|
|
|
|
websocketpp::frame::opcode::TEXT);
|
|
|
|
|
m_websocket_send_edit->SetText(std::wstring(L""));
|
2022-03-09 16:25:04 +08:00
|
|
|
|
return true;
|
|
|
|
|
});
|
|
|
|
|
}
|
2022-03-03 23:22:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LuaDelegate* WebsocketClientForm::LuaVM()
|
|
|
|
|
{
|
2022-03-13 01:50:44 +08:00
|
|
|
|
return mLua;
|
2022-03-03 23:22:08 +08:00
|
|
|
|
}
|
2022-03-09 16:25:04 +08:00
|
|
|
|
|
|
|
|
|
void WebsocketClientForm::ShowDataInEdit(const char*src)
|
|
|
|
|
{
|
2022-03-09 17:12:36 +08:00
|
|
|
|
m_rich_edit_1->AppendText(string2wstring(std::string(src)),false);
|
2022-03-09 16:25:04 +08:00
|
|
|
|
}
|
2022-03-11 00:33:50 +08:00
|
|
|
|
|
|
|
|
|
void WebsocketClientForm::OnConnected(WebsocketClient* ws)
|
|
|
|
|
{
|
|
|
|
|
if (nullptr != m_label_1) {
|
|
|
|
|
if (mWebsocketClient->State() == WebsocketClient::CONNECTED) {
|
|
|
|
|
m_label_1->SetText(std::wstring() + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " +
|
|
|
|
|
string2wstring(mWebsocketClient->Url()) + L"<EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>");
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
m_label_1->SetText(std::wstring() + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: " +
|
|
|
|
|
string2wstring(mWebsocketClient->Url()) + L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WebsocketClientForm::OnDisConnected(WebsocketClient* ws, WebsocketClient::CloseReason)
|
|
|
|
|
{
|
|
|
|
|
std::cout << "OnDisConnected" << std::endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WebsocketClientForm::OnReadHandler(WebsocketClient* ws, std::string message)
|
|
|
|
|
{
|
|
|
|
|
std::cout << "recv data from hanlder" << message.c_str();
|
2022-03-13 01:50:44 +08:00
|
|
|
|
this->mLua->CallFuntion<std::string>("OnWebSocketData", message);
|
2022-03-11 00:33:50 +08:00
|
|
|
|
}
|