QWebSocket это баг или так и должно быть?



  • (Сразу извините за длинные логи, но если делать сообщения короче, бага становится не стабильной)
    Есть такой кусочек кода:

    connect(&m_webSocket, &QWebSocket::textMessageReceived, [](const QString &msg) {
    			qDebug() << "QWebSocket::textMessageReceived msg:" << msg;
    		});
    		connect(&m_webSocket, &QWebSocket::textFrameReceived, [](const QString &msg, bool isLast) {
    			qDebug() << "QWebSocket::textFrameReceived msg:" << msg;
    			qDebug() << "QWebSocket::textFrameReceived isLast:" << isLast;
    		});
    

    И вот что странное он выдаёт:

    1. Первый раз всё нормально:

    [11302|08:49.368|D] ../../../QtAlsama/Views/MainWindow.cpp(276)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textFrameReceived msg: "{"event":"chat:message:video","userId":2882303761858024593,"timestamp":"2016-11-10T10:08:49+0000","eventId":"edd5357cf3e079a685921e6786324a9d","data":{"id":"2882303761858248941","ct_chat_group_id":"2882303761858040497","dt_creation":"2016-11-10T10:08:48Z","msg":" <тут длинный текст № 1(примерно 200 байт)> ","file_id":null,"guid":null,"read":false,"author":{"id":"2882303761858040467","name":"zz zz","email":"test@gmail.com","user_id":"2882303761858040468","ava_line":"ZZ","img_file_id":null},"chat_msg_type":"video","unread_cnt":63},"url":"http:\/\/dev.alsma.synergetica.net\/pub?id=ch2882303761858024593"}"

    [11302|08:49.369|D] ../../../QtAlsama/Views/MainWindow.cpp(277)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textFrameReceived isLast: true

    [11302|08:49.369|D] ../../../QtAlsama/Views/MainWindow.cpp(273)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textMessageReceived msg: "{"event":"chat:message:video","userId":2882303761858024593,"timestamp":"2016-11-10T10:08:49+0000","eventId":"edd5357cf3e079a685921e6786324a9d","data":{"id":"2882303761858248941","ct_chat_group_id":"2882303761858040497","dt_creation":"2016-11-10T10:08:48Z","msg":" <тут длинный текст № 1(примерно 200 байт)> ","file_id":null,"guid":null,"read":false,"author":{"id":"2882303761858040467","name":"zz zz","email":"test@gmail.com","user_id":"2882303761858040468","ava_line":"ZZ","img_file_id":null},"chat_msg_type":"video","unread_cnt":63},"url":"http:\/\/dev.alsma.synergetica.net\/pub?id=ch2882303761858024593"}"

    ...

    1. А вот уже второй раз ерунда какая-то:

    [11302|08:49.416|D] ../../../QtAlsama/Views/MainWindow.cpp(276)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textFrameReceived msg: "{"event":"chat:message:video","userId":2882303761858024593,"timestamp":"2016-11-10T10:08:49+0000","eventId":"c6000141fda439a590514e700e0a410d","data":{"id":"2882303761858248940","ct_chat_group_id":"2882303761858040497","dt_creation":"2016-11-10T10:08:48Z","msg":" <тут длинный текст № 2(примерно 2К байт)> ","file_id":null,"guid":null,"read":false,"author":{"id":"2882303761858040467","name":"zz zz","email":"test@gmail.com","user_id":"2882303761858040468","ava_line":"ZZ","img_file_id":null},"chat_msg_type":"video","unread_cnt":63},"url":"http:\/\/dev.alsma.synergetica.net\/pub?id=ch2882303761858024593"}"

    [11302|08:49.416|D] ../../../QtAlsama/Views/MainWindow.cpp(277)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textFrameReceived isLast: true

    [11302|08:49.416|D] ../../../QtAlsama/Views/MainWindow.cpp(273)|MainWindow::doWebSockedConnect()::<lambda()>::<lambda : QWebSocket::textMessageReceived msg: "{"event":"chat:message:video","userId":2882303761858024593,"timestamp":"2016-11-10T10:08:49+0000","eventId":"edd5357cf3e079a685921e6786324a9d","data":{"id":"2882303761858248941","ct_chat_group_id":"2882303761858040497","dt_creation":"2016-11-10T10:08:48Z","msg":" <тут длинный текст № 1(примерно 200 байт)> ","file_id":null,"guid":null,"read":false,"author":{"id":"2882303761858040467","name":"zz zz","email":"test@gmail.com","user_id":"2882303761858040468","ava_line":"ZZ","img_file_id":null},"chat_msg_type":"video","unread_cnt":63},"url":"http:\/\/dev.alsma.synergetica.net\/pub?id=ch2882303761858024593"}{"event":"chat:message:video","userId":2882303761858024593,"timestamp":"2016-11-10T10:08:49+0000","eventId":"c6000141fda439a590514e700e0a410d","data":{"id":"2882303761858248940","ct_chat_group_id":"2882303761858040497","dt_creation":"2016-11-10T10:08:48Z","msg":" <тут длинный текст № 2(примерно 2К байт)> ","file_id":null,"guid":null,"read":false,"author":{"id":"2882303761858040467","name":"zz zz","email":"test@gmail.com","user_id":"2882303761858040468","ava_line":"ZZ","img_file_id":null},"chat_msg_type":"video","unread_cnt":63},"url":"http:\/\/dev.alsma.synergetica.net\/pub?id=ch2882303761858024593"}"

    обратите внимание что в последний вызов сигнала QWebSocket::textMessageReceived попали данные из предыдущего! Это разве правильно?! Ведь QWebSocket::textFrameReceived в прошлый и в этот раз выдал isLast как true и по идее это уже другой фрейм... я проверял на браузерном webSpcket-е там всё правильно - фреймы разные, а у QWebSocket это стабильно повторяется, но стоит отметить что только для второго вызова, в дальнейших такого не наблюдаю (пока не наблюдаю)

    Если кто что может подскажите, может я что-то не доперепонял?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.