[Development] Does QNetworkAccessManager could provide the Server Sent Event feature ?

Thiago Macieira thiago.macieira at intel.com
Tue Feb 17 22:17:33 CET 2015


On Tuesday 17 February 2015 20:50:44 Paul Chavent wrote:
> On 02/16/2015 11:58 PM, Thiago Macieira wrote:
> > On Monday 16 February 2015 23:52:19 Paul Chavent wrote:
> >> The parts 6 "Parsing an event stream" [2] gives the specs of the format
> >> over http. The part 7 "Interpreting an event stream" explains how it
> >> should be handled by the client. For some sample code, I've found useful
> >> those two pages [3] and [4].
> >> 
> >> [2] http://www.w3.org/TR/eventsource/#parsing-an-event-stream
> >> [3]
> >> https://today.java.net/article/2010/03/31/html5-server-push-technologies-> >> pa
> >> rt-1#sse [4] http://www.html5rocks.com/en/tutorials/eventsource/basics/
> > 
> > I'm looking for the HTTP command verb and expected replies.
> > 
> > If it's a GET, POST, PUT, DELETE or similar, with the reply a 200 Ok, then
> > QNAM already supports this and no modifications are necessary.
> 
> The difference is that the server can send asynchronous responses (event). I
> will look deeper in the current code base.

If it's plain HTTP/1.x, then the server cannot send anything that the client 
did not ask for (HTTP/2.0 can do that). The only way to implement server-
pushed data in HTTP/1.x is for the client to make a request that the server 
always responds with a Chunked transfer that never ends. That's how 1990s web-
based chats were implemented.

If that's ow this server event is implemented, then QNAM already supports it. 
The QNetworkReply's readyRead() signal will be emitted whenever new events are 
received. You just have to parse it.

At most, we'd implement a wrapper around QNetworkReply to make the parsing 
easier.

If it's not how it's implemented -- if there are HTTP spec changes -- then 
QNAM needs modifications.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list