我想用POCO构建一个WebSocket服务器。 我的服务器应该在一段时间内向客户端发送数据并且一直发送数据。当客户端发送一些数据时,服务器应该处理发送给客户端的数据。使用POCO C++的非阻塞WebSocket服务器
我handleRequest
内我WebSocketRequestHandler
方法:
void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
{
WebSocket ws(request, response);
char buffer[1024];
int flags = 0;
int n = 0;
do {
// recieving message
n = ws.receiveFrame(buffer, sizeof(buffer), flags);
// ... do stuff with the message
// sending message
char* msg = (char *) "Message from server"; // actually manipulated, when message recieved
n = sizeof(msg);
ws.sendFrame(msg, strlen(msg), WebSocket::FRAME_TEXT);
sleep(1); // time intervall sending messages
} while (n > 0 || (flags & WebSocket::FRAME_OP_BITMASK) != WebSocket::FRAME_OP_CLOSE);
}
的问题是,该方法得到stucked在we.recieveFrame()
,直到它到达的帧。
那么我该如何解决这个问题,receiveFrame()
没有阻止循环。
是解决这个完整问题的更好方法吗?
谢谢。
'非阻塞' ......睡眠(1); –
当然..你是对的:-) @MartinJames,但实际上它甚至没有达到这么远,当客户端不发送消息。 – daB0bby
不知道你在做什么。如果你没有得到一个框架,你不会得到这个信息,那么你会发送什么? – SergeyA