Since almost all platforms support Websocket, is it necessary to use Socket.io?
Socket.io (especially > 1.0) solves these issues with a layer by having smart reconnection mechanisms and starts by connecting over plain old HTTP longpolling, and upgrades the connection to use websockets if they're available and work.
https://www.npmjs.com/package/websocket.io
You can use that, and the built-in WebSocket object in modern browsers.