1 下载源码

https://github.com/uNetworking/uWebSockets

2 使用(服务端)

class Server {
public:
std::promise<void> server_ready_promise;

struct MyData
{
/* data */
std::string custom_data;
};

void runServer() {
uWS::App().ws<MyData>("/*", {
.open = [](auto* ws) {
MyData* myData = (MyData*)ws->getUserData();
myData->custom_data = "initial data";
std::cout << "Server: Client connected" << std::endl;
},
.message = [](auto* ws, std::string_view message, uWS::OpCode opCode) {
std::cout << "Server: Received and broadcast message: " << message << std::endl;
ws->publish("broadcast", message, opCode);
},
.close = [](auto* ws, int code, std::string_view message) {
std::cout << "Server: Client disconnected" << std::endl;
}
}).listen(9001, [this](auto* listen_socket) {
if (listen_socket) {
std::cout << "Server listening on port 9001" << std::endl;
server_ready_promise.set_value(); // 服务器已准备好
}
}).run();
}
};

3 加到UE中

BUG:

1 Warning C4996 : 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

使用_dupenv_s代替:// 原代码(产生警告)

const char* env_value = getenv("ENV_VAR_NAME");

// 替换为
char* env_value = nullptr;
size_t len = 0;
errno_t err = _dupenv_s(&env_value, &len, "ENV_VAR_NAME");

BUG:

2 HttpParser.h(359): Error C4459 : “err”的声明隐藏了全局声明

将局部变量名改为其他名称,避免与全局冲突:err->localerr

BUG:

3 从“unsigned char”到 bool 的隐式转换。信息可能丢失

使用 static_cast显示转换 

  <bool>(numMessageIndices);

BUG:

4 从“int”到 bool 的隐式转换。信息可能丢失

protocol::formatMessage<isServer>(sendBuffer, message.data(), message.length(), opCode, message.length(), static_cast<bool>(compress), fin);
static_cast<bool>(compress)

BUG:

WebSocket.h(168): Error C4456 : “webSocketData”的声明隐藏了上一个本地声明

WebSocketData *webSocketData_ = (WebSocketData *) Super::getAsyncSocketData();


 
posted on 2025-07-17 19:03  偷懒的阿贤  阅读(64)  评论(0)    收藏  举报