I was planning to use socket.io with the same stack (Python, Flask) for a game development project last year. Figured that the Python ports of socket.io weren't well-maintained so I took the traditional approach with Comet(Long-polling).
On another note, if you're interested in Socket.IO because of WebSockets then do know that Android 4.3 and older don't support WebSockets and so the server might need to support Long-polling anyway. It might actually introduce more lag to first check for websockets, and if unavailable, fall back to long-polling. I will wait till majority of target devices support it by default.
> It might actually introduce more lag to first check for websockets, and if unavailable, fall back to long-polling.
Socket.IO works the other way around since v 1.0, thanks to Engine.IO. It starts with long polling and tries to upgrade to WebSocket or Flash sockets if possible.
That's good to know. And Socket.IO could move back to WebSocket-first approach, once the technology becomes more pervasive. It's still a task to set up Socket.IO with Python though. Don't know how nice it plays with Node.js, but I'm happy moving to Go instead.
I was playing with gevent-socketio, and ended up with massive memory leaks - could be it was my mistakes in code though.
But later I went with gevent + gevent-websocket (gevent-socketio also uses it), and it's been working like a charm for me.
Android 4.3 and older don't support WebSockets
In native developmet, I presume? Because the Chrome browser can handle them fine.
Yes, native. Android's webview was based on the old Android Browser until KitKat/4.4 when it switched to using Chrome to render.
Check out SockJS which has a properly tested/supported Python server https://github.com/mrjoes/sockjs-tornado
At one point I'm probably moving to vert.x to use SockJS server-side [1], I'm not that tied to python and would be good to decouple the whole messaging into a separate process anyway.
http://aaugustin.github.io/websockets/ might be attractive if you're on Python 3.
I started using Socket.IO with python server, gevent-socketio (actually Flask-SocketIO that is based on gevent-socketio). But then the Socket.IO 1.0 came out 28 May 2014 and gevent-socketio is not yet updated. Not sure if there's any plan for it.
Another tricky part is that gevent-socketio doesn't play together with uwsgi so I had to move from uwsgi to gunicorn in order to use Socket.IO and also the latest gunicorn breaks Socket.IO support so must use gunicorn 0.16.1 instead of 0.19.1. A bit frustrating ride. But that's another story :-)