Hi Kurt,

I'm quite impressed with the state of the websockets module.
I tried reviewing the code, but I have to admit that I just started reading the 
RFC a bit, so here are some first random notes.

When websockets becomes part of a Qt module you can consider using 
QObjectPrivate which makes the d pointer implementation slightly cleaner and 
removes the need for duplicate d pointers (one from qobject one for the class's 
own implementation.

In the public interface I'd generally declare signals with const refs, alone 
for consistency.

While not really harmful there is generally no point in explicitly initializing 
empty strings, I'd personally remove the QString() calls from the class 
initialzers just to remove a few lines.

qsslserver newEncryptedConnection is never emitted, I didn't look into what it 
means though.

qwebsockethandshakeresponse: m_acceptedExtension doesn't seem used, instead 
there is a string list passed through, I suppose it can simply be removed, it 
also has a getter that will always return an empty string.


I was reading the RFC a bit, in section 9.1 there are some notes about the 
extensions:

const QList<QString> matchingExtensions =
                    
supportedExtensions.toSet().intersect(request.extensions().toSet()).toList();

does no longer guarantee the order of extentions - according to sec 9.1. this 
is important.

The same seems to go for matchingProtocols - the first one is picked, since 
QSet doesn't guarantee any order it is basically chosen by random.
I don't know how significant that is but I assume the client's first choice (?) 
should be taken.


Greetings,
Frederik

________________________________
From: [email protected] 
[[email protected]] on behalf of 
Kurt Pattyn [[email protected]]
Sent: Thursday, January 16, 2014 12:51 PM
To: [email protected]
Cc: Heikkinen Jani; '[email protected]' ([email protected]); 
[email protected]; [email protected]
Subject: Re: [Development] Qt 5.3 Feature freeze is coming quite soon...

I would like to propose the QtWebSockets module as a new feature for Qt 5.3 
(see https://qt.gitorious.org/qtplayground/websockets/source/master)

There are a number of requests in Jira: 
https://bugreports.qt-project.org/issues/?jql=labels%20%3D%20websockets asking 
to include web socket functionality in Qt, so maybe it is a good time to 
include it now.
Besides that, EnginIo could make use of this module as well (currently it uses 
an own implementation of web sockets).

QtWebSockets is fully RFC6455 compliant (see 
http://tools.ietf.org/html/rfc6455) and is successfully tested against the 
latest Autobahn TestSuite. Performance is OK as well (test report is not 
included because of too big).

There is a C++ interface as well as a QML module.
The C++ API consists of the following classes:
QWebSocket
QWebSocketServer
QWebSocketProtocol

The QML API consists of the following component:
WebSocket (included in the Qt.WebSockets 1.0 module).

I see 2 options: either add the functionality to the QtNetwork module, or add 
it as a Qt add-on.
Maybe adding it to QtNetwork would be a ‘natural’ place: QWebSocket would then 
live besides QTcpSocket, QWebSocketServer would live besides QTcpServer.

The module compiles on all reference platforms, has automated unit tests and 
manual unit tests (against Autobahn TestSuite), is fully documented, and has a 
number of examples.
The module is included in the CI system of Qt (see 
http://testresults.qt-project.org/ci/WebSockets_master_Integration/).


Please raise your votes.

Cheers,

Kurt



On 16 Jan 2014, at 09:28, Heikkinen Jani 
<[email protected]<mailto:[email protected]>> wrote:

Hi all,

I want to remind you all that Qt 5.3 feature freeze is coming pretty soon. 
Feature freeze for Qt 5.3 is 14th Feb 2014 so there is only 4 weeks left for 
implementing new features.

Qt 5.3 schedule can be found here: http://qt-project.org/wiki/Qt-5.3-release . 
There is also link to the Qt 5.3 new features page 
(http://qt-project.org/wiki/New-Features-in-Qt-5.3). You can start collecting 
list of new features there…

Note: Let’s keep the feature freeze date! If your feature isn’t ready at that 
point let’s then move it to Qt 5.4 release instead of taking in it in Qt 5.3 
and fighting with it whole release time…
This is also action point for each maintainer: Make sure your component is 
ready for feature freeze at that date.

Just a reminder:
In the feature freeze all new functionality must

- Compile on all reference platforms (If a module/feature is only for one 
platform, make sure qmake/make does nothing on the other platforms)
- Have tests. Automated tests should cover as much as possible of the new 
functionality. If certain areas are not covered by automated tests, there must 
be clarification how testing will be done for those
- Have documentation. No undocumented public API. Basic docs have to be there, 
only polishing should still be required after the freeze
- Have examples. Have some examples showing how to use the API. Examples need 
to be linked to from documentation.

In addition, new modules need to

- Follow the branching scheme. dev/stable/release should be there. A new module 
can be ok to only have dev, with stable being created at branching time.
- Have a CI system. New modules that are going to be part of Qt releases need 
to have a CI system set up

Br,
Jani
_______________________________________________
Development mailing list
[email protected]<mailto:[email protected]>
http://lists.qt-project.org/mailman/listinfo/development

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to