firtst release

This commit is contained in:
zcy 2022-03-16 23:13:59 +08:00
parent 7065ee909e
commit cd6f769e25
4 changed files with 41 additions and 19 deletions

View File

@ -1 +1 @@
require("string") local file = io.open("writetest.txt", "w+") function OnNewClient(ip,port) showdata("on new client from lua " .. ip..port) end function OnClientRecvData(data,ip,port) showdata("client recieve data from lua "..data.. ip..port) end function OnClientDisconnect(ip,port) showdata("client leave from lua " .. ip..port) end
require("string") local file = io.open("writetest.txt", "w+") function OnNewClient(ip,port) showdata("on new client from lua " .. ip..port) end function OnClientRecvData(data,ip,port) showdata("client recieve 123 from lua "..data.. ip..port) end function OnClientDisconnect(ip,port) showdata("client leave from lua " .. ip..port) end

View File

@ -33,6 +33,11 @@ void on_connection_close(WebsocketServer* s, websocketpp::connection_hdl hdl){
s->m_on_close(addr.to_string(), socket.remote_endpoint().port());
}
void on_connection_fail(WebsocketServer* s, websocketpp::connection_hdl hdl)
{
std::cout << "on_connection_fail";
}
// Define a callback to handle incoming messages
void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg) {
std::cout << "on_message called with hdl: " << hdl.lock().get()
@ -49,21 +54,6 @@ void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr
if (s->m_on_message)
s->m_on_message(addr.to_string(),
socket.remote_endpoint().port(), msg->get_payload());
// check for a special command to instruct the server to stop listening so
// it can be cleanly exited.
/*
if (msg->get_payload() == "stop-listening") {
s->m_server->stop_listening();
return;
}
try {
s->m_server->send(hdl, msg->get_payload(), msg->get_opcode());
} catch (websocketpp::exception const & e) {
std::cout << "Echo failed because: "
<< "(" << e.what() << ")" << std::endl;
}
*/
}
std::string WebsocketServer::Url()
@ -80,6 +70,8 @@ WebsocketServer::WebsocketServer(std::string server,uint32_t port){
m_port = port;
m_url = server;
m_server = new WsServer;
m_status = START_LISTEN;
m_thread = new std::thread([this](){
// Set logging settings
m_server->set_access_channels(websocketpp::log::alevel::all);
@ -90,9 +82,29 @@ WebsocketServer::WebsocketServer(std::string server,uint32_t port){
m_server->set_open_handler(std::bind(&on_new_connection,this,::_1));
m_server->set_message_handler(std::bind(&on_message,this,::_1,::_2));
m_server->set_close_handler(std::bind(&on_connection_close,this,::_1));
m_server->listen(m_port);
m_server->set_fail_handler(std::bind(&on_connection_fail, this, ::_1));
websocketpp::lib::error_code ec;
m_server->listen(websocketpp::lib::asio::ip::tcp::v4(),
m_port, ec);
if (ec) {
std::cout << "listen failed because: " << ec.message() << std::endl;
this->m_status = WebsocketServer::FAIL;
return ;
}
// Start the server accept loop
m_server->start_accept();
try
{
m_server->start_accept(ec);
if (ec) {
std::cout << "start_accept failed because: " << ec.message() << std::endl;
this->m_status = WebsocketServer::FAIL;
return;
}
}
catch (const std::exception& e)
{
std::cout << e.what();
}
// Start the ASIO io_service run loop
m_server->run();
});

View File

@ -18,6 +18,13 @@ typedef WsServer::message_ptr message_ptr;
class WebsocketServer {
public:
enum Status
{
STOP = 0,
START_LISTEN = 1,
LISTENING = 2,
FAIL = 3,
};
typedef std::function<void(std::string addr, uint32_t port)> OnNewConnectionHanlder;
typedef std::function<void(std::string addr, uint32_t port)> OnConnectionCloseHanlder;
@ -30,6 +37,8 @@ public:
friend void on_new_connection(WebsocketServer* s, websocketpp::connection_hdl hdl);
friend void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg);
friend void on_connection_close(WebsocketServer* s, websocketpp::connection_hdl hdl);
friend void on_connection_fail(WebsocketServer* s, websocketpp::connection_hdl hdl);
int SendData(uint32_t,const char *data,int len,websocketpp::frame::opcode::value);
int SendDataAllClient(const char *data,int len,websocketpp::frame::opcode::value);
void SetOnNewConnectionHanlder(OnNewConnectionHanlder);
@ -45,6 +54,7 @@ private:
OnConnectionCloseHanlder m_on_close;
OnMessageHanlder m_on_message;
std::map<uint32_t,websocketpp::connection_hdl> m_clients;
Status m_status;
};

View File

@ -30,7 +30,7 @@ WebsocketServerForm::~WebsocketServerForm()
{
std::cout << "~WebsocketServerForm\r\n";
std::cout << "~WebsocketServerForm\r\n";
delete m_server;
}
void WebsocketServerForm::Init()