-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cross-compilation Rust 0mq #11
Comments
Tout d'abord, un petit mot sur ce qu'est la cross-compilation: c'est l'action de compiler sur une architecture donnée (par exemple, x86_64, votre laptop) un programme qui doit fonctionner sur une autre architecture donnée (par exemple, ARM64, ou… wasm i.e. WebAssembly, i.e. l'intérieur de votre navigateur web). WebAssembly c'est une architecture spécifique qui est prévue pour être lancée dans le navigateur. Yew utilise wasm sous le capot ( https://yew.rs/#wait-why-webassembly ) : le rust est compilé vers wasm, qui est ensuite lancé dans le navigateur. Votre UI est-elle bien affichée dans un navigateur web ? Bref, vous utilisez la crate "zmq", qui est https://docs.rs/zmq/0.9.2/zmq/, dont la dernière version date de septembre 2019 (donc pas forcément ultra maintenue à jour), et qui ne supporte pas wasm: erickt/rust-zmq#258 Il n'est donc pas possible d'utiliser cette librairie pour utiliser zeromq dans du wasm exécuté dans le navigateur. Mon conseil d'il y a quelques semaines reste donc le même: utiliser une websocket (bien supportée dans les navigateurs) pour communiquer vos données depuis le "backend" vers le "frontend". Un exemple de mini-serveur websocket en rust, utilisant une librairie, est disponible sur https://github.com/snapview/tungstenite-rs ou https://github.com/snapview/tokio-tungstenite/blob/master/examples/server.rs Dans l'exemple, ce serveur sera joignable sur ws://127.0.0.1:9001 ou ws://127.0.0.1:12345 et il est possible d'échanger des données depuis un navigateur en s'inspirant de https://developer.mozilla.org/fr/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications#exemples Si vous voulez, vous pouvez aussi ne pas coder ce truc en rust: vous pouvez faire un tout petit code python qui reçoit les messages du backend rust (via zeromq) et expose ces données via websocket au frontend ! |
@rgrunbla Is there a specific way to interface with websockets bind using zeromq library, and a client socket using tungstenite? Im trying to do this, but i get some handshake error when i try to connect to the zeromq ws socket, from wasm |
Bonsoir Monsieur,
Concernant l'interface graphique que l'on trouve sur https://github.com/GuilhemHnr/trackui
Dans la branche zeroMQ, le premier travail qui doit permettre de récupérer les avions des messages 0mq et les afficher sur la carte a été fait. Cependant, au moment de commencer les tests, nous sommes confrontés à une erreur indésirable liée à 0mq :
J'ai l'impression que le log montre deux erreurs différentes, même l'on suppose que la seconde (
error from HTML pipeline ...
) vient probablement du code qui devra être corrigé, la première nous pose plus problèmes.Il me semble comprendre que le système n’autorise pas que deux compilations s'effectuent en même temps, et la compilation passe par trunk (le builder pour faire du Web Assembly avec Rust) sauf que 0mq a besoin de cargo pour se build, ce qui générerai la cross-compliation ?
Une solution qui semble revenir et qui est expliquée sur l'issue que je trouve ici :
https://github.com/erickt/rust-zmq/issues/179
serait d'avoir les fichiers compilés de 0mq directement dans le build du projet.
Cependant c'est d'un niveau assez technique, ainsi on apprécierai avoir votre expertise sur le sujet.
Merci d'avance.
@rgrunbla
The text was updated successfully, but these errors were encountered: