理解できない 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 (バイト) のようです。
どんな助けでも大歓迎です、ありがとう!