QtWebChannel question

Pavel Vasev pavel.vasev at gmail.com
Tue Mar 3 11:51:27 UTC 2015


Anton, thank you very much for clarification!

Best Regards,
Pavel Vasev


2015-03-03 12:38 GMT+05:00 Anton Kreuzkamp <akreuzkamp at web.de>:

> Hi,
>
> yes, QtWebChannel is supposed to do client-server-communication. Currently
> it
> only works with a C++/Qt based server (which I use in a personal project).
> But
> theoretically (and that's the goal after all) it's possible to do the
> communication between a nodejs/php/JavaEE/... server and a qmlweb client
> using
> QtWebChannel (that's possible, as soon as someone implements the server
> side
> of the protocol for those server-technologies).
>
> To use it on client side:
>
> 1. include qwebchannel.js into your index.html:
>     <script type="text/javascript"
> src="qmlweb/src/qwebchannel.js"></script>
>
> 2. instanciate a websocket and a webchannel in your js-code:
>
> var socket = new WebSocket('example.com:8080/myWebSocketServer');
> var myObj;
>
> socket.onclose = function() {
>     console.log("web channel closed.");
> };
> socket.onerror = function(error) {
>     console.error("web channel error: " + error);
> };
> socket.onopen = function() {
>     new QWebChannel(socket, function(channel) {
>         // Stuff we do when the remote object arrives.
>         myObj = channel.objects.myObj;
>         myObj.someSignal.connect(function(someArg) {
>                 //...
>         });
>     });
> }
>
> 3. In Qml do whatever you want with it (you can just access your object
> using
> myObj). But attention: You always have to handle the case, the object is
> not
> yet there. Alternatively you can create the QML scene just when the object
> arrived.
> I plan to implement QMLEngine.registerSingleton(), though, which would then
> wait for the channel to be ready, synchronously.
>
>
> 4. For the (C++/Qt-) server side you need (e.g. in your main()):
>
> QWebChannel channel;
> QWebSocketServer server("QWebChannel Standalone Example Server",
> QWebSocketServer::NonSecureMode);
> if (!server.listen(QHostAddress::Any, 10002)) {
>     qFatal("Failed to open web socket server.");
>     return 1;
> }
>
> MyObj myObj;
>
> QObject::connect(&server, &QWebSocketServer::newConnection, [&] () {
>     channel.connectTo(new
> WebSocketTransport(server.nextPendingConnection()));
>     // Do some init stuff...
> });
>
> channel.registerObject("myObj", &myObj);
>
> Cheers, Anton
>
>
> On Monday 02 March 2015 21:00:47 you wrote:
> > Anton, hi again!! ;-)
> >
> > I noted that you made some deeds on QtWebChannel  thing.
> >
> > Could you please describe, how could it be used?
> >
> > I googled some info and found
> > http://www.kdab.com/qt-webchannel-bridging-gap-cqml-web/
> > but I cannot understand, if we are already in browser, how
> > do you consider to use QtWebChannel?
> >
> > Can it be used for browser-server communication?
> >
> > e.g. can I load some qml objects in nodejs and communicate
> > with browser using QtWebChannel?
> >
> > Best Regards,
> > Pavel Vasev
>
> --
> Gruß auch an die NSA.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/qmlweb/attachments/20150303/f41e9574/attachment-0001.html>


More information about the QmlWeb mailing list