mumble-voip/mumble

Add WebSocket transport to Murmur

Open

#2131 opened on Feb 23, 2016

View on GitHub
 (14 comments) (12 reactions) (0 assignees)C++ (5,642 stars) (1,062 forks)batch import
feature-requesthelp wantedserver

Description

It would be nice if Murmur supported a websocket transport.

This would make it possible to write a Mumble client in the browser, without any intermediary proxies. (Voice support would be a hack, probably provided via getUserMedia/ScriptProcessorNode, potentially codecs via Emscripten...)

There are a couple of ways to go:

  • Murmur could provide a new listener on port 443, providing WebSocket access. (This would probably clash with existing hosting providers...)
  • Murmur could provide WebSocket service on the ports already used by the regular Mumble protocol. Technically, this would use ALPN and present both HTTP (probably HTTP2 [1]) and the Mumble protocol.
    • Both! We could do both, making the port 443 part optional.

[1]: One would assume that when using ALPN, that browsers treat the "default" protocol of a server to be HTTP/1.1. Since we need to be backwards compatible with older Mumble clients, we need the default protocol to be Mumble, not HTTP. Still, in this scenario, browsers without HTTP2 support that connect to it, will try to send HTTP to Murmur on the listener meant for the Mumble protocol. It's possible this can be avoided by filtering clients based on their TLS handshakes, for example the ALPN protocol preferences of the client, and other things.

Contributor guide