我正在解决我无法理解的 WebSocket 问题。
请使用以下代码作为参考:
int write_buffer_size = 8000 +
LWS_SEND_BUFFER_PRE_PADDING +
LWS_SEND_BUFFER_POST_PADDING;
char *write_buffer = new unsigned char[write_buffer_size];
/* ... other code
write_buffer is filled in some way that is not important for the question
*/
n = libwebsocket_write(wsi, &write_buffer[LWS_SEND_BUFFER_PRE_PADDING], write_len,
(libwebsocket_write_protocol)write_mode);
if (n < 0) {
cerr << "ERROR " << n << " writing to socket, hanging up" << endl;
if (utils) {
log = "wsmanager::error: hanging up writing to websocket";
utils->writeLog(log);
}
return -1;
}
if (n < write_len) {
cerr << "Partial write: " << n << " < " << write_len << endl;
if (utils) {
log = "wsmanager-error: websocket partial write";
utils->writeLog(log);
}
return -1;
}
当我尝试发送大于 7160 字节的数据时,我总是收到相同的错误,例如Partial write: 7160 < 8000。
你对这种行为有什么解释吗?
我分配了一个为有效负载保留 8000 字节的缓冲区,因此我希望能够发送最大 8K 的数据量,但 7160(字节)似乎是我可以发送的最大数据量。
任何帮助表示赞赏,谢谢!