Handle ArrayBuffer received via WebSocket's binaryMessageReceived() with QML



  • Hi everyone,

    I can't find any information getting even close to what I'm looking for - hope someone can be of help.

    I'm trying to receive an image sent from C++ as ByteArray via WebSockets in a QML app.

    Since there is a newly added (in Qt 5.8) Signal for the WebSocket QML Type that should do just that, I figured I'd use it (see http://doc-snapshots.qt.io/qt5-dev/qml-qtwebsockets-websocket.html#binaryMessageReceived-signal - beware the documentation error, the binaryMessageReceived Signal has an ArrayBuffer as parameter and not a QString, as reported: https://bugreports.qt.io/browse/QTBUG-57906).

    However, I have no idea how to handle the ArrayBuffer / binary message that is received in order to show it in a QML object (Image ? Canvas ?).

    Can anyone explain to me how this can be done ?

    Thanks for your help !
    Daniel



  • This code looks like it would do the trick. Once you have a url object you should be able to use that as the source for an Image.

    https://gist.github.com/candycode/f18ae1767b2b0aba568e

    This is an assumption on my part but it's something you could look into. :)



  • Thanks for the link !

    I haven't yet been able to get it working.
    But I suspect I should probably be using a Loader with a Canvas component, instead of a simple Image element.

    I'll test it out and let you know.
    If anyone has a working code, don't hesitate to share ^^
    I'm sure it would be a great example to include in the docs.

    Daniel