C- libwebsocket发送有效载荷限制



我有libwebsocket客户端发送二进制数据。我将二进制数据保存到缓冲区中[即buf]并写入插座。

n = libwebsocket_write(wsi,
       &buf[LWS_SEND_BUFFER_PRE_PADDING], l, opts | LWS_WRITE_BINARY);

我的问题是插座能够仅编写22392字节[我收到的n = 22392]。当我的l> = 22392字节时,会注意到部分写入。此值在各种体系结构中有所不同。

问题:

  • libwebsocket中是否存在数据大小的限制?

  • 任何方法可以扩展缓冲有效载荷值?

我得到了我的问题的答案。那是阻止我数据的有效载荷值。根据数据大小调整有效载荷值。

struct libwebsocket_protocols {
   const char * name;
   callback_function * callback;
   size_t per_session_data_size;
   size_t rx_buffer_size;
   unsigned int id;
   struct libwebsocket_context * owning_server;
   int protocol_index;
};

rx_buffer_size
您应该将其设置为您支持的最大法律框架的大小。

将rx_buffer_size设置为65536后,我能够完全编写数据。

此处的链接对我有帮助
https://libwebsockets.org/trac/libwebsockets/ticket/40
https://libwebsockets.org/libwebsockets-api-doc.html

既不使用此库或使用阻止插座。该库没有提供无障碍I/O的理智方式。要做明智的非阻滞I/O,在部分写作上,您需要知道发送了多少个字节,以及剩下多少个字节要发送,以便您可以在插座再次写作时尝试写其余的。但是该库只为您提供一个数字。没有办法说这两件事。

(您不能仅从要发送的字节数中减去,因为编码的数据大于未编码的数据。)

相关内容

  • 没有找到相关文章

最新更新