Сборка FMETP WebGL Unity. Ошибка Emscripten при активации FMNetworkManager в Heirarchy

#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, и я рыскал по Интернету в поисках решений, но безрезультатно.

  1. Хотя я уже упоминал, что у меня была потоковая передача видео с одного устройства на другое. У меня это функционировало только локально. С помощью node.js сервер также работает в Цифровом океане. Который, похоже, функционирует, поскольку оба устройства регистрируются сервером во время выполнения. В каждом приложении, в то время как я вижу, что кажется передачей данных, наблюдая за обновлением времени последней отправки, плюс FM Web Socket Network_debug также подталкивает [подключено: True] к текстовому пользовательскому интерфейсу. Флажки isConnected или Найденный сервер внутри FM-клиента (сценария) не могут проверить, подключен ли он.

FMNetworkManager

Я ни в коем случае не эксперт в программировании 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.