Wie kann ich ein interaktives Programm, das mit Emscripten kompiliert wurde, auf einer Webseite ausführen?

9

Ich habe ein einfaches Programm, sagen Sie folgendes:

%Vor%

und ich habe es mit Emscripten kompiliert:

%Vor%

Dies gibt mir eine ziemlich einfache von Emscripten generierte Webseite, die ein einfaches Fenster für Programm Ausgabe enthält. Der Aufruf fgets() verursacht jedoch ein Browser-Popupfenster, vermutlich von prompt() . Ich kann Dinge eingeben, und die Ergebnisse werden schließlich im Ausgabefenster angezeigt. Dies ist keine ideale interaktive Erfahrung.

Was ich möchte, ist eine konventionellere "Konsolen" -Schnittstelle, wo der Benutzer interaktiv in das Terminalfenster tippen kann, um Eingaben für das interaktive Programm zu liefern.

Ich vermute, dass die Lösung in etwas wie JQueryTerminal , , liegen könnte Hyper , oder Xterm.js , aber ich bin mir bisher nicht im Klaren darüber, wie man irgendeinen davon mit einem Emscript-kompilierten Programm verbindet .

Wie kann ich eine "Konsolen" -Schnittstelle zu meinem Emscripten-Code bereitstellen?

    
Greg Hewgill 17.01.2018, 01:13
quelle

1 Antwort

3

Es ist nicht genau das, was Sie wollten, ich denke, das ist nicht möglich, aber hier ist Prof of Concept von Async-Code, es missbrauchen Fetch-API in C und verwenden Proxy in JavaScript für XHR, die Nachrichten von C behandeln. Sie können es erweitern um irgendeinen asynchronen Code zu haben, der in JS erledigt werden muss. Das Beispiel verwendet jQuery Terminal und es verhält sich genau wie Ihr Beispiel C-Code.

Ссылка

Ich habe auch ein Problem mit async-Code in emscripten repo

erstellt     
jcubic 18.01.2018 13:45
quelle