Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: GeckoView appreciation thread

mavavilj [12.03.2024 11:27:59]

#

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/consumer/geckoview-quick-start.html

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.

mavavilj [12.03.2024 13:15:08]

#

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.

jalski [12.03.2024 16:52:23]

#

Itse lähdin sille tielle, että toteutin kaiken 8th:lla ja päädyin WebSocket pohjaiseen ratkaisuun.

Lisäsin tuen valaistuksen ohjaukseen

mavavilj [12.03.2024 17:18:48]

#

jalski kirjoitti:

Itse lähdin sille tielle, että toteutin kaiken 8th:lla ja päädyin WebSocket pohjaiseen ratkaisuun.

Lisäsin tuen valaistuksen ohjaukseen

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta