2015-11-25 32 views
4

我使用libwebsocket在C++中實現了一個websocket客戶端。
我想發送大消息,但我限制消息有效載荷爲8K,我需要使用該有效載荷值。
這是我的初始化代碼文檔片斷:現在libwebsocket:發送有限負載的大消息

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的消息。
有沒有辦法來bufferize數據或我必須使用fraggle

回答

1

我找到了解決我的問題的方法。該問題與每個分段幀使用的標誌和操作碼有關。
看看這個(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