simple websocket用法
项目地址在:https://gitlab.com/eidheim/Simple-Web-Server
我调试通过的代码如下:
#include "server_ws.hpp"using namespace std;using WsServer = SimpleWeb::SocketServer<SimpleWeb::WS>;void run_simple_socket_server(unsigned short port)
{WsServer server;server.config.port = port;auto &echo = server.endpoint["^/echo/?$"];echo.on_message = [](shared_ptr<WsServer::Connection> connection, shared_ptr<WsServer::Message> message){auto message_str = message->string();cout << "Server: Message received: \"" << message_str << "\" from " << connection.get() << endl;cout << "Server: Sending message \"" << message_str << "\" to " << connection.get() << endl;auto send_stream = make_shared<WsServer::SendStream>();*send_stream << message_str;connection->send(send_stream, [](const SimpleWeb::error_code &ec){if (ec) {cout << "Server: Error sending message. " <<"Error: " << ec << ", error message: " << ec.message() << endl;} });};echo.on_open = [](shared_ptr<WsServer::Connection> connection){cout << "Server: Opened connection " << connection.get() << endl;};echo.on_close = [](shared_ptr<WsServer::Connection> connection, int status, const string & /*reason*/){cout << "Server: Closed connection " << connection.get() << " with status code " << status << endl;};echo.on_error = [](shared_ptr<WsServer::Connection> connection, const SimpleWeb::error_code &ec){cout << "Server: Error in connection " << connection.get() << ". "<< "Error: " << ec << ", error message: " << ec.message() << endl;};thread server_thread([&server](){ server.start(); });server_thread.join();
}
int main(int argc, char const *argv[])
{unsigned short port = 10088;cout << "Server port: " << port << endl;run_simple_socket_server(port);return 0;
}
Makefile如下:
.PHONY : cleanROOTDIR = ../..
INCLUDE = -I../$(ROOTDIR)/lib/inc -I$(ROOTDIR)/public -I$(ROOTDIR)/public/simple_websocket_server
LDLIBS = -lpthread -lssl -lcrypto -lboost_system
runlibs = -Wl,-rpath=/web/libdst = arm
ifeq ($(dst),arm)
CXX = aarch64-linux-gnu-g++ --std=c++11
LDLIBS += -L../$(ROOTDIR)/lib/so.aarch64
else
CXX = g++ --std=c++11
LDLIBS += -L../$(ROOTDIR)/lib/so.x86_64
endifbin = ../../bin/simple_websocketsrc = $(wildcard *.cpp)
obj = $(patsubst %.cpp,%.o, $(src))$(bin) : $(obj)$(CXX) $(runlibs) $^ -o $@ $(LDLIBS)$(obj): %.o : %.cpp$(CXX) -g -c $(INCLUDE) $< -o $@clean :rm -f $(obj) $(bin)