微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我使用libwebsocket在C ++中实现了一个websocket客户端。

我想发送大消息,但我限制消息有效载荷为8K,我需要使用该有效载荷值。

这里是我的初始化代码的剪切:

void WSManager::initProtocols(void) { memset(protocols,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

在c / c ++中使用pthread_cond_wait和pthread_cond_signal以循环方式执行多个线程

编程使用ARP

在Linux上,是由内核或libc(或其他语言运行库)设置的TLS?

如何完全清除Windows C ++中的所有用户环境variables

如何获取以太网设备列表

我找到了解决我的问题。 这个问题与每个分段帧使用的标志和操作码有关。

看看这个(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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐