Teen projektia, jossa pitää yhdistää frontend selaimessa ja backend vapaaehtoisella, lähinnä C/C++ -koodilla. Yleisin tähän suositeltu teknologia oli WebSocket, missä onkin järkeä, jos pitää yhdistellä internetin kautta.
Sitten viritin WebSocket -serverin lokaaliksi. Tämä oli aika säätöä, koska WebSocket:iin tulee melko paljon käsittelyn koodia. Lisäksi kirjasto voi olla iso. Lisäksi mobiilialustojen ja muiden alustojen väliset yhteensopivuudet ovat joskus hataria.
Sitten tajusin, että on sellainen kuin WebView, mutta erityisesti, että siinä on joskus sellainen kuin Native Messaging (https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging).
Tein toimivan viestienvälityksen n. 20 minuutissa Android:lle. Ja koodia on vähän näkyvissä.
https://firefox-source-docs.mozilla.org/mobile/android/geckoview/
Nyt voin tehdä GUI:n selaimeen ja pyöritellä backend:ssä mitä normaaleja C/C++ -koodeja minua huvittaakin.
Toivotaan, että siirtyy iOS:lle pian. Android:lla tämä ainakin toistaiseksi vaikuttaa paljon helpommalta järjestelmältä kuin Androidin oma Java/Kotlin SDK.
Lisäksi WebView -ohjelma näyttää about samalta kuin natiiviohjelma.
Näin tulee esim. float array Kotliniin sisään:
const arraytest = {"array": [1.0, 2.4, 3.0]} port.postMessage(arraytest);
val portDelegate: PortDelegate = object : PortDelegate { override fun onPortMessage( message: Any, port: WebExtension.Port ) { val jsonarray = ((message as JSONObject).get("array") as JSONArray)
Ja nyt jsonarray on esim. [1, 2.4, 3] JSONArray.
PS: meni väärään alifoorumiin.
Itse lähdin sille tielle, että toteutin kaiken 8th:lla ja päädyin WebSocket pohjaiseen ratkaisuun.
jalski kirjoitti:
Itse lähdin sille tielle, että toteutin kaiken 8th:lla ja päädyin WebSocket pohjaiseen ratkaisuun.
WebSocketinhan voi vielä liittää Native messagingiin. Erityisesti, jos tällöin palvelin on muualla kuin lokaalisti.
WebSocketin saa lokaaliinkin toki, mutta se on selvästi helpompi, jos client ja server eivät ole samalla koneella, jolloin ei tarvitse miettiä selaimen ja natiivin yhteyttä, vaan selaimen ja web-palvelimen.
Työpöytä-OS:t eivät ole muutenkaan palvelimiksi optimaalisia, kun monen clientin WebSocket:lla load balancerit yms. ovat myös aiheellisia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.