Matrix-Client mit wenigen Features bauen
- javascript
- programmiertechnik
Liebe Mitlesende,
hat jemand schon einmal versucht, sich einen eigenen Matrix-Client als PWA mit dem offiziellen SDK zu bauen? NachMöglichkeit würde ich gerne ohne (p)npm arbeiten.
Mein Ziel ist ein rudimentärer Client, der nur ausgewählte Features unterstützt und in eine bereits bestehende PWA integriert werden kann. Dazu gehört z.B. das Handling von Zugangsdaten, da die PWA Profile mehrerer Server unterstützt, die jeweils ihre eigenen Matrix-Server nutzen, wobei aber alles unter einer Oberfläche vereint werden soll. Das bedeutet auch, dass die vom Benutzer möglichen Chat-Räume bereits fest vorgegeben sind und nicht vom Client verwaltet werden können (sollen).
Wer kann mir raten, wie ich insbesondere ohne (p)npm anfange? Ist es überhaupt möglich, JS-Dateien des SDKs in einem Unterverzeichnis vorzuhalten und von dort aus einzubinden?
Liebe Grüße
Felix Riesterer
Hallo Felix Riesterer,
es ist normalerweise unvermeidlich, sich der Anforderung des Autors an den Paketmanager zu beugen. Ob Yarn, NPM oder PNPM - sie verwenden alle das NPM Packagerepository und bedienen die package.json. PNPM behauptet von sich, der schnellste zu sein, und die KI meines geringsten Misstrauens sagt das auch.
Du kannst das SDK dann - meine ich - mit PNPM in ein Unterverzeichnis installieren, das beispielsweise "trinity" oder "neo" heißt und von dort dann das SDK importieren. Im Quickstart steht, dass Du pnpm add verwenden sollst, das gilt dann, wenn Dein Projekt selbst eine package.json nutzt. Wenn Du das SDK eigenständig in ein Subdir lädst, müsstest Du, meine ich, pnpm install verwenden.
Zum Einbinden: Der Quickstart schreibt
import * as sdk from "matrix-js-sdk";
das ist also ein ES6-Modul. Wobei ich etwas stutze, ES6 verlangt bei Einbindung eines Moduls eigentlich einen relativen Pfad, also "./matrix-js-sdk". Das Quickstart-Beispiel könnte für node.js gelten.
Wenn dein Main-Modul in /scripts liegt und das SDK in /scripts/morpheus liegt, sollte die Einbindung mit
import * as sdk from "./morpheus/matrix-js-sdk";
gelingen. Aber ausprobiert habe ich das jetzt nicht, ich habe ja auch keinen Matrix-Server zum Testen da.
Wie sich das Ganze dann nachher beim Paketieren für die PWA-Installation verhält, wirst Du Dir wohl noch separat ausbröseln müssen.
Rolf
Hallo Felix,
so, ich bin zu Hause und habe es mir nochmal angeschaut: Matrix-js-sdk ist für Node gemacht und funktioniert im Browser nicht ohne weiteres. In der README.md steht zwar zu Beginn treuherzig
This SDK can be run in a browser or in Node.js.
Aber wenn man dann etwas weiterscrollt, dann heißt es:
matrix-js-sdk can be used in either Node.js applications (ensure you have the latest LTS version of Node.js installed),
or in browser applications, via a bundler such as Webpack or Vite.
You can also use the sdk with Deno (import npm:matrix-js-sdk) but its not officially supported.
Also - für den Einsatz des SDK brauchst Du einen Toolstack, der bis in die Stratosphäre reicht.
Rolf
Lieber Rolf,
Also - für den Einsatz des SDK brauchst Du einen Toolstack, der bis in die Stratosphäre reicht.
seufz - mein ungutes Gefühl scheint sich zu bewahrheiten. Mal sehen, ob ich eine aktive Installation von Element im Browser dahingehend klonen kann, dass dieses Teil zumindest auf meinem lokalen Testsystem läuft, um dann systematisch diejenigen Module einzubinden, die diejenige Funktionalität bereitstellen, die ich benötige.
Wenn ich das richtig gesehen habe, sind die Script-Dateien alle in TypeScript geschrieben. Das kann der Browser nicht einfach so als JavaScript laden. Das muss zuerst nach JavaScript kompiliert werden. Also hat es wohl einen Sinn, wenn ich die fertigen JavaScript-Dateien aus einer funktionierenden Web-Installation entnehme. Das ist dann nicht mehr ohne Weiteres update-fähig, aber zumindest kann ich schon einmal damit etwas entwickeln und mir später um die Update-Fähigkeit Gedanken machen.
Vielen Dank für Deine Zeit!
Liebe Grüße
Felix Riesterer