Someone should build a generic fallback…
If you don’t know Socket.io then here’s the gist of it:
- Socket.io is a piece of JS client code, and a server side implementation
- It enables writing message passing code between a client and a server
- It decides on its own what transport to use – WebSocket, XHR, SSE, Flash, pigeons, …
It is also very popular – as a developer, it lets you assume a WebSocket like interface and develop on top of it; and it takes care of all the mess of answering the question “but what if my browser/proxy/whatever doesn’t support WebSocket?
I guess there are use cases where the WebRTC data channel is like that – you’d love to have the qualities it gives you, such as reduced server load and latency, but you can live without it if you must. It would be nice if we’d have a popular Socket.io-like interface to do just that – to attempt first to use WebRTC’s data channel, then fallback to either a TURN relay for it or to WebSocket (and degrading from there further along the line of older transport technologies).
The closest I’ve seen to it is what AirConsole is doing. They enable a smartphone to become the gamepad of a browser. You get a smartphone and your PC connected so that whatever you do in the phone can be used to control what’s on the PC. Such a thing requires low latency, especially for gaming purposes; and WebRTC probably is the most suitable solution. But WebRTC isn’t always available to us, so AirConsole just falls back to other mechanisms.
While a gaming console is an obvious use case, and I did see it in more instances lately, I think there’s merit to such a generic framework in other instances as well.
Time someone implemented it 🙂
https://github.com/piranna/DataChannel-polyfill — three years old.
http://socket.io/blog/socket-io-p2p/ — never. Underlying code is… well, I have my opinion about it 🙂
http://socket.io/blog/socket-io-p2p/ — widely adopted as you can see.