I did a new port of base ioquake3, and actually contributed changes back, so upstream ioquake3 now has decent Emscripten support. The multiplayer is using WebRTC DataChannel, based on HumbleNet but I had to make quite a few changes, as it was abandoned a long time ago.
Code is here: https://github.com/jdarpinian/ioq3 https://github.com/jdarpinian/HumbleNet