I recently integrated the self-hosted EmulatorJS (https://github.com/EmulatorJS/EmulatorJS) into my Web Desktop daedalOS (https://github.com/DustinBrett/daedalOS). Has worked really well with controls on mobile and added a ton of emulator support to my "OS". All the emulators are wasm/asmjs ports from Libretro, I believe.