0 votes
in SoSci Survey (dt.) by s146698 (115 points)

Liebes SoSci Team,

Wäre es möglich bei der "Mediendatein hochladen" Funktion WebAssembly Dateien (.wasm) als "Steuerungsdatei" zuzulassen. Wir wollen einige Umfragen mit sich verändernden Bildern durchführen, dies wäre zwar prinzipiell in javascript möglich, doch da WebAssembly ja seit letztem Jahr zu den W3C-Standard gehört, wollten wir einerseits aus Performance technischen Gründen dies benutzen. Andererseits ist die Entwicklung für unser Team in Rust angenehmer als in javascript selbst. Es wäre sehr nett, wenn wasm Dateien zugelassen werden könnten.

Mit freundlichen Grüßen

1 Answer

+1 vote
by SoSci Survey (302k points)

Mitunter können wir ganz kompakt antworten: Ja.

by s146698 (115 points)
Hey,

erstmal, vielen dank für die schnelle Antwort und das schnell Einrichten der upload Funktion!

Doch scheint es noch einige Probleme zu geben, ich bekomme beim aufsetzen einer kleinen Test Datei die Fehlermeldung:

"Failed to load module script: The server responded with a non-JavaScript MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec."

Dies scheint an der Serverkonfiguration zu liegen. Ich habe diese Testdatei  mit einem dem "webpack-dev-server" probiert und es funktionierte, doch mit dem "http-server", installiert durch npm, komme ich auf die selbe Fehlermeldung.

Ich habe eine html datei die eine
"bootstrap.js" einbindet, diese importiert die "index.js" und diese importiert die .wasm Datei.
by SoSci Survey (302k points)
So, wir haben www.soscisurvey.de auch den MIME-Type noch beigebracht. Möchten Sie nochmal testen?
by s146698 (115 points)
Augenscheinlich hat sich bis hierhin noch nichts geändert, es tritt immer noch die selbe Fehlermeldung auf.
by SoSci Survey (302k points)
Könnten Sie bitte einen Pretest-Link direkt zu der Seite im Fragebogen posten, auf welchem Sie die Datei einbinden? Dann kann ich das nochmal prüfen. Danke.
by s146698 (115 points)
Klar,

https://www.soscisurvey.de/test209464/?act=alctxmyVfYwvLFdA2VGt2ueb

Bei dem Knopfdruck "js" erscheint kurzweilig "hello from js" in der Console.
Bei dem Knopfdruck "wasm" sollte kurzweilig "hello from wasm" in der Console auftauchen.
by SoSci Survey (302k points)
Mein Firefox meldet in der Konsole:

> Laden des Moduls von "https://www.soscisurvey.de/test209464/wasm_tut_bg.wasm" wurde auf Grund eines nicht freigegebenen MIME-Typs ("application/wasm") blockiert.

Der MIME-Typ ist also scheinbar schonmal korrekt :)

Blockiert wird es durch den Browser. Laut dieser Seite müssen Sie mit einem "Promise" die Berechtigung vom Browser einholen, damit es nicht gesperrt wird: https://webassembly.org/docs/web/ - ähnlich wie zur Verwendung von Webcam und Mikrofon.

Hier ein Snippet, das evtl. weiterhilft: https://github.com/WebAssembly/spec/issues/1140
by s146698 (115 points)
edited by s146698
Hey,

Ich habe jetzt ein paar Tage gebraucht um mich in diese Thematik einzulesen, vorallem da ich diese Aufgabe mehr nebenbei erarbeite.

Meine momentane arbeit sieht davon so aus:

const wasm = import('wasmfile.wasm')

wasm.
    then(compilat => setup(compilat))

die setup methode führt dabei nur die speicherung aus und das setzten einiger flags als kennzeichnung, das die wasm lib nun verwendet werden kann. Auf meinem npm server funktioniert dieses laden nun auch. Vorher wurde dies per packeges gemanaget.

Doch ich bekomme immernoch den Fehler:

".... wurde auf Grund eines nicht freigegebenen MIME-Typs ("application/wasm") blockiert"

Was habe ich an dieser Stelle falsch verstanden, es müsste doch nun so funktionieren?

Auch stecke ich bei dem Code Snipet fest, dieses funktionier gar nicht (in einer async funktion wie benötig)
by SoSci Survey (302k points)
Ich habe damit selbst noch nicht gearbeitet, und kann daher nur raten, wo es hakt. Haben Sie es einmal so versucht, wie im letzten Link (https://github.com/WebAssembly/spec/issues/1140) beschrieben?

Dort wird im new Response() der erwartete Typ exakt spezifiziert. Meine Vermutung ist, dass genau das beim import() noch fehlt. Zumindest würde das zur Fehlermeldung passen.

Ansonsten verwenden Sie doch einmal 1:1 den Beispiel-Code von Mozilla und testen Sie, wie weit Sie damit kommen: https://developer.mozilla.org/en-US/docs/WebAssembly/Loading_and_running
by s146698 (115 points)
Hey,

Ich habe jetzt meine Datein aktualisiert und benutze gerade zum Test kein .wasm mehr und auch  keine Verlinkung dahin.

Der 1:1 Code funktioniert bei mir nur dann wenn ich keine Klassen benutze, dies ist natürlich ärgerlich, aber umgehbar ....

Nun scheinen auf dem Fileserver aber noch alte Files zu sein auf die Referenziert wird. Ich bekomme diese Übermittelt obwohl ich sie nicht mehr Referenziere oder Uploaded habe.

Sind die Fileserver chached oder liegt es an einer anderen Stelle?
by SoSci Survey (302k points)
Vermutlich liegen Sie im Cache Ihres Browsers. Wenn Sie die Entwicklertools öffnen, können Sie dort in der Netzwerkanalyse ein Häkchen machen, um den Cache zu deaktivieren.

Alterantiv hängen Sie ein ?abc an den Dateinamen, also z.B. datei.wasm?cde, um das Caching zu umgehen. Das klappt mit jedem "Anhängsel" natürlich nur einmal.
by s146698 (115 points)
Hey,

Danke für die Hilfreichen Antworten.
Mein Cache war bereits deaktiviert, dies tue ich beim web dev immer, da es sonst zu komischen Bugs kommen kann.

Ich habe ja andere Datei hochgeladen und diese Referenziert und es gab keine referenz mehr auf die alten Datein, trotzdem wurden diese Übermittelt.

Jetzt da etwas Zeit vergangen ist, tritt dieser Fehler nun auch nicht mehr auf. Ich bin mir sehr sicher, dass dieser Fehler nicht auf meiner Seite lag, da ich es auch von verschiedenen Browsern ausprobiert habe. Trotzdem vielen lieben Dank.
by SoSci Survey (302k points)
Seltsam ... denn wenn Sie eine Datei auf SoSci Survey hochladen, wird die alte direkt überschrieben. Dort gibt es kein Caching, welches das Verhalten erklären könnte.

> Der 1:1 Code funktioniert bei mir nur dann wenn ich keine Klassen benutze

Was meinen Sie mit "keine Klassen"? Geht es um den JavaScript-Code oder direkt um das wasm-File?

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...