libwebsocket:发送有限负载的大消息

我使用libwebsocket在C ++中实现了一个websocket客户端。
我想发送大消息,但我限制消息有效载荷为8K,我需要使用该有效载荷值。
这里是我的初始化代码的剪切:

void WSManager::initProtocols(void) { memset(protocols, 0, sizeof(protocols)); protocols[0].name = "default"; protocols[0].callback = callback; protocols[0].per_session_data_size = 1500; protocols[0].rx_buffer_size = 8000; /* End of the list */ protocols[1].name = NULL; protocols[1].callback = NULL; protocols[1].per_session_data_size = 0; protocols[1].rx_buffer_size = 0; } 

现在的问题是如何发送大于8K的消息。
有没有办法缓冲数据或我必须使用fraggle

我找到了解决我的问题。 这个问题与每个分段帧使用的标志和操作码有关。
看看这个(libwebsocket)写函数:

 int n = libwebsocket_write(wsi, &write_buffer[LWS_SEND_BUFFER_PRE_PADDING], write_len,(libwebsocket_write_protocol)write_mode); 

write_mode应该设置如下:

 int write_mode; write_mode = LWS_WRITE_BINARY; // single frame, no fragmentation write_mode = LWS_WRITE_BINARY | LWS_WRITE_NO_FIN; // first fragment write_mode = LWS_WRITE_CONTINUATION | LWS_WRITE_NO_FIN; // all middle fragments write_mode = LWS_WRITE_CONTINUATION; // last fragment 

如果您需要更多的细节,请阅读WebSocket RFC的碎片部分: https : //tools.ietf.org/html/rfc6455#section-5.4