firtst release
This commit is contained in:
parent
7065ee909e
commit
cd6f769e25
@ -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
|
@ -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());
|
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
|
// Define a callback to handle incoming messages
|
||||||
void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg) {
|
void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg) {
|
||||||
std::cout << "on_message called with hdl: " << hdl.lock().get()
|
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)
|
if (s->m_on_message)
|
||||||
s->m_on_message(addr.to_string(),
|
s->m_on_message(addr.to_string(),
|
||||||
socket.remote_endpoint().port(), msg->get_payload());
|
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()
|
std::string WebsocketServer::Url()
|
||||||
@ -80,6 +70,8 @@ WebsocketServer::WebsocketServer(std::string server,uint32_t port){
|
|||||||
m_port = port;
|
m_port = port;
|
||||||
m_url = server;
|
m_url = server;
|
||||||
m_server = new WsServer;
|
m_server = new WsServer;
|
||||||
|
m_status = START_LISTEN;
|
||||||
|
|
||||||
m_thread = new std::thread([this](){
|
m_thread = new std::thread([this](){
|
||||||
// Set logging settings
|
// Set logging settings
|
||||||
m_server->set_access_channels(websocketpp::log::alevel::all);
|
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_open_handler(std::bind(&on_new_connection,this,::_1));
|
||||||
m_server->set_message_handler(std::bind(&on_message,this,::_1,::_2));
|
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->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
|
// 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
|
// Start the ASIO io_service run loop
|
||||||
m_server->run();
|
m_server->run();
|
||||||
});
|
});
|
||||||
|
@ -18,6 +18,13 @@ typedef WsServer::message_ptr message_ptr;
|
|||||||
|
|
||||||
class WebsocketServer {
|
class WebsocketServer {
|
||||||
public:
|
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)> OnNewConnectionHanlder;
|
||||||
typedef std::function<void(std::string addr, uint32_t port)> OnConnectionCloseHanlder;
|
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_new_connection(WebsocketServer* s, websocketpp::connection_hdl hdl);
|
||||||
friend void on_message(WebsocketServer* s, websocketpp::connection_hdl hdl, message_ptr msg);
|
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_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 SendData(uint32_t,const char *data,int len,websocketpp::frame::opcode::value);
|
||||||
int SendDataAllClient(const char *data,int len,websocketpp::frame::opcode::value);
|
int SendDataAllClient(const char *data,int len,websocketpp::frame::opcode::value);
|
||||||
void SetOnNewConnectionHanlder(OnNewConnectionHanlder);
|
void SetOnNewConnectionHanlder(OnNewConnectionHanlder);
|
||||||
@ -45,6 +54,7 @@ private:
|
|||||||
OnConnectionCloseHanlder m_on_close;
|
OnConnectionCloseHanlder m_on_close;
|
||||||
OnMessageHanlder m_on_message;
|
OnMessageHanlder m_on_message;
|
||||||
std::map<uint32_t,websocketpp::connection_hdl> m_clients;
|
std::map<uint32_t,websocketpp::connection_hdl> m_clients;
|
||||||
|
Status m_status;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ WebsocketServerForm::~WebsocketServerForm()
|
|||||||
{
|
{
|
||||||
std::cout << "~WebsocketServerForm\r\n";
|
std::cout << "~WebsocketServerForm\r\n";
|
||||||
std::cout << "~WebsocketServerForm\r\n";
|
std::cout << "~WebsocketServerForm\r\n";
|
||||||
|
delete m_server;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebsocketServerForm::Init()
|
void WebsocketServerForm::Init()
|
||||||
|
Loading…
Reference in New Issue
Block a user