2016-11-17 10 views
0

Я использую libwebsockets-2.1.0 с generic session & lwsws вариант включен.Libwebsockets 2.1.0 - это незаконно, чтобы сделать lws_write вне

В case LWS_CALLBACK_SERVER_WRITEABLE У меня есть код, который открывает файл и выводит содержимое на websocket.

static const char* filename = "/tmp/loop.log"; 
#define MAX_STAT_LINE_LENGTH 256 

unsigned char buf[LWS_PRE + 512]; 
unsigned char *p = &buf[LWS_PRE]; 

char line[MAX_STAT_LINE_LENGTH]; 

while (fgets(line, sizeof(line), fp) != NULL) { 
    int n = lws_snprintf((char *)p, sizeof(line), "%s", line); 
    int m = lws_write(wsi, p, n, LWS_WRITE_TEXT); 

    if (m < n) { 
     printf("websocket write failed\n"); 
    } 
} 

В терминале я получаю кучу из них:

lwsws[13778]: ****** 0x9230a50: Sending new 46 (/name?ag=z&abcd=011), pending truncated ... 
It's illegal to do an lws_write outside of the writable callback: fix your code 

Есть ли объяснение этой ошибки? Я имею в виду, я объявил char line[1000], но он все еще жалуется.

Я хотел бы отметить, что окончательного выхода WebSocket противоречив, иногда он останавливается на line 30-something, иногда он останавливается на line 400

FWIW, общая строка файла Я читал это линии с длинной длиной символа линии символов.

Удаление цикла fgets и замена значения на мое собственное общее значение, похоже, работают нормально.

Благодаря

+1

Вы должны добавить объявление о ваших переменных – Mansuro

+0

насчет WSI? – Mansuro

+0

@Mansuro Я считаю, что WSI является структурой из LWS, в функции она объявлена ​​как: статического Int callback_stats_streamer (структура LWS * ВИС перечислений lws_callback_reasons причина ничтожного * пользователь, аннулируются * в, size_t LEN) { // мои коды здесь } Я надеюсь, что это помогло. – d30jeff

ответ

0

Исправление для увеличения rx buf размера.

#define LWS_PLUGIN_PROTOCOL_DUMB_INCREMENT \ 
{ 
    "protocol_dumb_increment", \ 
    callback_dumb_increment, \ 
    sizeof(struct per_session_data__dumb_increment), \ 
    4000, /* rx buf size must be >= permessage-deflate rx size */ \ 
} 

Источник: libwebsocket's github issue page

 Смежные вопросы

  • Нет связанных вопросов^_^