Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
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; });
И вот что странное он выдаёт:
- Первый раз всё нормально:
[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"}"
...
2. А вот уже второй раз ерунда какая-то:[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 это стабильно повторяется, но стоит отметить что только для второго вызова, в дальнейших такого не наблюдаю (пока не наблюдаю)
Если кто что может подскажите, может я что-то не доперепонял?