#node.js #unity3d #webgl #webassembly #emscripten
Вопрос:
Итак, я работал над проектом, который транслирует видеопоток с Oculus quest на сборку WebGL, запущенную на удаленном сервере (Цифровой океан).
В настоящее время у меня есть две проблемы…
1.Когда я создаю WebGL и запускаю обновление в Интернете. Он будет работать только в том случае, если я отключу FMNetworkManager.
Если я запускаю приложение локально, у него нет проблем, и я смог отправить видео с гарнитуры Quest в приложение-приемник.
Часть ответа заключается в следующем:
An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:
uncaught exception: abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/kripken/emscripten/wiki/Linking") at jsStackTrace (Viewer.wasm.framework.unityweb:8:15620)
stackTrace (Viewer.wasm.framework.unityweb:8:15791)
onAbort@https://curtin-cooking-control-nr9un.ondigitalocean.app/Build/UnityLoader.js:4:11199
abort (Viewer.wasm.framework.unityweb:8:500966)
_dlopen (Viewer.wasm.framework.unityweb:8:181966)
@blob:https://***/de128118-3923-4c88-8092-7a9945d90746 line 8 > WebAssembly.instantiate:wasm-function[60882]:0x1413efb (blob:***/de128118-3923-4c88-8092-7a9945d90746 line 8 > WebAssembly.instantiate:wasm-function[62313]:0x1453761)
...
...
...WebAssembly.instantiate:wasm-function[63454]:0x148b9a9)
UnityModule [UnityModule/Module.dynCall_v] (Viewer.wasm.framework.unityweb:8:484391)
browserIterationFunc (Viewer.wasm.framework.unityweb:8:186188)
runIter (Viewer.wasm.framework.unityweb:8:189261)
Browser_mainLoop_runner (Viewer.wasm.framework.unityweb:8:187723)
Поэтому я понимаю, что есть проблема, связанная с (wasm) Emscripten, и я рыскал по Интернету в поисках решений, но безрезультатно.
- Хотя я уже упоминал, что у меня была потоковая передача видео с одного устройства на другое. У меня это функционировало только локально. С помощью node.js сервер также работает в Цифровом океане. Который, похоже, функционирует, поскольку оба устройства регистрируются сервером во время выполнения. В каждом приложении, в то время как я вижу, что кажется передачей данных, наблюдая за обновлением времени последней отправки, плюс FM Web Socket Network_debug также подталкивает [подключено: True] к текстовому пользовательскому интерфейсу. Флажки isConnected или Найденный сервер внутри FM-клиента (сценария) не могут проверить, подключен ли он.
Я ни в коем случае не эксперт в программировании unity, настройке webgl и веб-серверов, поэтому мое понимание того, как это работает, заставило меня взглянуть на множество нерелевантных решений, пытаясь внести небольшие изменения в элементы, которые предлагают некоторые решения, а другие оставляют меня с пустыми глазами, смотрящими в пространство, задаваясь вопросом, где я вообще это реализовал.
Любое руководство было бы здорово, пошаговое решение было бы фантастическим.
[Правка — Подробная ошибка]
UnityLoader.js:1150 wasm streaming compile failed: TypeError: Could not download wasm module
printErr @ UnityLoader.js:1150
Promise.catch (async)
doNativeWasm @ 524174d7-d893-4b91-8…0-aa564a23702d:1176
(anonymous) @ 524174d7-d893-4b91-8…0-aa564a23702d:1246
(anonymous) @ 524174d7-d893-4b91-8…-aa564a23702d:20166
UnityLoader.loadCode.Module @ UnityLoader.js:889
script.onload @ UnityLoader.js:854
load (async)
loadCode @ UnityLoader.js:849
processWasmFrameworkJob @ UnityLoader.js:885
job.callback @ UnityLoader.js:475
setTimeout (async)
job.complete @ UnityLoader.js:490
(anonymous) @ UnityLoader.js:951
decompressor.worker.onmessage @ UnityLoader.js:89
Заранее спасибо
Аарон
Ответ №1:
Вы неправильно используете сочетание FMNetworkUDP и FMWebsocket вместе. Для сборки WebGL UDP не разрешен, что приводит к ошибке, как и ожидалось.
Ваш IP-адрес websocket доступен, потому что он доступен через ваш IP-адрес. Но, пожалуйста, постарайтесь не раскрывать свой IP-адрес сервера на общедоступном форуме, таком как stackoverflow, который каждый может подключить к вашему серверу в любое время в будущем.
Вы должны полностью удалить FMNetworkManager, оставив только компоненты FMWebsocket для потоковой передачи webgl.
Вы можете протестировать его с помощью их примера потоковой передачи Websocket с помощью сборки webgl.