Merge WebSocketServer functionality into HttpServer so a single port can serve both HTTP(S) and WebSocket(S) endpoints while preserving full backward compatibility for existing HTTP interfaces. Key changes: - Add WebSocket route registration: ws(), onWsConnect(), onWsDisconnect() - Add client management: sendToWsClient(), broadcastWs(), disconnectWsClient() - Rewrite Session class using beast::tcp_stream for unified HTTP/WS handling - Support automatic ws:// and wss:// upgrades on HTTP/HTTPS ports - Thread-safe message queue with asio::post for cross-thread sends - Update Makefile to link OpenSSL and pthread for TLS/WebSocket support - Add test_server.cpp demonstrating HTTP + WebSocket mixed usage
50 lines
1.7 KiB
Makefile
50 lines
1.7 KiB
Makefile
VERSION := 0.0.1
|
|
FRAMEWORK_NAME := us
|
|
LIB_NAME := libus_http
|
|
INSTL_TDIR := /lib
|
|
INCLU_TDIR := /usr/include
|
|
INCLU_SDIR := inc
|
|
CPP := g++
|
|
INCS := -I inc -I/opt/homebrew/include
|
|
CPPFLAGS := --std=c++20 -O3 -pipe -Wall -Werror
|
|
LIBS := -L/opt/homebrew/lib -lssl -lcrypto -lpthread
|
|
BUILD_TDIR := build
|
|
$(shell mkdir -p $(BUILD_TDIR))
|
|
|
|
#--------
|
|
all: $(BUILD_TDIR)/$(LIB_NAME).so
|
|
|
|
$(BUILD_TDIR)/$(LIB_NAME).so: $(BUILD_TDIR)/HttpServer.o #$(BUILD_TDIR)/WebSocketServer.o $(BUILD_TDIR)/WebSocketClient.o
|
|
$(CPP) -shared $^ $(LIBS) -o $@
|
|
|
|
$(BUILD_TDIR)/HttpServer.o: src/HttpServer.cpp
|
|
$(CPP) $(CPPFLAGS) -fPIC -c $^ $(INCS) -o $@
|
|
|
|
$(BUILD_TDIR)/WebSocketServer.o: src/WebSocketServer.cpp
|
|
$(CPP) $(CPPFLAGS) -fPIC -c $^ $(INCS) -o $@
|
|
|
|
$(BUILD_TDIR)/WebSocketClient.o: src/WebSocketClient.cpp
|
|
$(CPP) $(CPPFLAGS) -fPIC -c $^ $(INCS) -o $@
|
|
|
|
clear:
|
|
@rm -rvf $(BUILD_TDIR)
|
|
|
|
install:
|
|
@echo "install UniServe_libth..."
|
|
@mkdir -vp $(INCLU_TDIR)/$(FRAMEWORK_NAME)
|
|
@cp -vf $(INCLU_SDIR)/$(FRAMEWORK_NAME)/HttpServer.hpp $(INCLU_TDIR)/$(FRAMEWORK_NAME)/
|
|
@cp -vf $(INCLU_SDIR)/$(FRAMEWORK_NAME)/HttpClient.hpp $(INCLU_TDIR)/$(FRAMEWORK_NAME)/
|
|
#@cp -vf $(INCLU_SDIR)/$(FRAMEWORK_NAME)/WebSocketServer.hpp $(INCLU_TDIR)/$(FRAMEWORK_NAME)/
|
|
#@cp -vf $(INCLU_SDIR)/$(FRAMEWORK_NAME)/WebSocketClient.hpp $(INCLU_TDIR)/$(FRAMEWORK_NAME)/
|
|
@cp -vf $(BUILD_TDIR)/$(LIB_NAME).so $(INSTL_TDIR)/
|
|
@echo "done."
|
|
|
|
uninstall:
|
|
@echo "uninstall UniServe_libth..."
|
|
@rm -vf $(INCLU_TDIR)/$(FRAMEWORK_NAME)/HttpServer.hpp
|
|
@rm -vf $(INCLU_TDIR)/$(FRAMEWORK_NAME)/HttpClient.hpp
|
|
@rm -vf $(INCLU_TDIR)/$(FRAMEWORK_NAME)/WebSocketServer.hpp
|
|
@rm -vf $(INCLU_TDIR)/$(FRAMEWORK_NAME)/WebSocketClient.hpp
|
|
@rm -vf $(INSTL_TDIR)/$(LIB_NAME).so
|
|
@echo "done."
|