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());
|
||||
}
|
||||
|
||||
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();
|
||||
});
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ WebsocketServerForm::~WebsocketServerForm()
|
||||
{
|
||||
std::cout << "~WebsocketServerForm\r\n";
|
||||
std::cout << "~WebsocketServerForm\r\n";
|
||||
|
||||
delete m_server;
|
||||
}
|
||||
|
||||
void WebsocketServerForm::Init()
|
||||
|
Loading…
Reference in New Issue
Block a user