[Interest] Problem transfering bigger data amounts over Websockets on iOS

Markus Steinhilber markus.st.wrk at gmail.com
Fri Jan 20 11:58:37 CET 2017


I currently have a problem with websockets on iOS. I'm using a
websocket connection to send commands and files over a network (WiFi)
between 2 devices. The server is a Windows CE device with Qt5.3 and
the client can be an iPad or Windows PC, using a program compiled with
Qt 5.7.1. The files are transfered by breaking them into smaller parts
(~20-300KB, depending on the speed of the last part) and sending them
as a websocket message. There is a small protocol implemented to
coordinate the parts.

Especially when transfering bigger files(>200MB) over the network, at
some point i always run into a disconnect of the socket with the
closeReason "Timeout when reading data from socket." on the Client.
The server then gives a normal disconnect without closeReason.

My first question is: Is this a normal closeReason for a disconnect in
case of a bad WiFi connection or could it be a bug in my software or
even in Qt's Websocket implementation? I did force some disconnects by
powering off the server device while transfering data and I did not
get the same error on the client.

I also found the QTBUG-14975 which very much sounds like my issue. The
closeReason is set in qwebsocketframe.cpp after a
waitForReadyRead(5000). But the main differences are that this bug is
only reported as happening on Windows and about every 4-5GB
transmitted. In my case it's happening only on iOS and about every
200-300 MB.

Since the problem only happens on iOS(iPad and simulator) but not with
a Windows PC as client, i am also thinking about, if this could be an
OS related problem. Like iOS detecting a Wifi disconnect earlier when
a Windows PC maybe waits a bit longer and the connections get better

Would it be a solution to change the timeout of the
waitForReadyRead(5000) in qwebsocketframe.cpp and compile a custom Qt?
Is it likely that this will help?

Thanks for any help on that topic. I'm investigating this problem for
days and don't find any solution.

More information about the Interest mailing list