Easy WebSockets with Flask and Gevent
- WebSocket是HTML5引入的一种新的通信协议,主要由web客户端和服务器来实现,尽管它也可以在web之外实现。
与HTTP连接不同,WebSocket连接是客户端和服务器之间的一个永久的双向通信通道,其中任何一方都可以发起交换。一旦建立,连接将保持可用,直到其中一方断开连接。
WebSocket连接对于需要以非常低的延迟显示实时信息的游戏或网站非常有用。在此协议存在之前,还有其他效率低得多的方法来实现相同的结果,如Comet。
- SocketIO是一个跨浏览器的Javascript库,它将客户机应用程序从实际的传输协议中抽象出来。现代浏览器使用WebSocket协议,但对于没有WebSocket的旧浏览器,SocketIO使用一种较旧的解决方案来模拟连接,这是每个给定客户端的最佳解决方案。
最重要的事实是,在所有情况下,应用程序使用相同的接口,不同传输机制抽象背后共同的API,所以使用SocketIO你几乎可以确保任何浏览器将能够连接到您的应用程序,并为每个浏览器将使用最有效的方法。
- 不久前,Kenneth Reitz发布了Flask- sockets,这是Flask的另一个扩展,可以让Flask的应用程序访问WebSocket。
Flask-Sockets和Flask-SocketIO之间的主要区别在于前者封装了本机WebSocket协议(通过使用geevent - WebSocket项目),因此它只能被大多数具有本机支持的现代浏览器使用。flasksocketio透明地对旧浏览器进行降级。
另一个区别是,Flask-SocketIO实现了SocketIO Javascript库公开的消息传递协议。Flask-Sockets只是实现了通信通道,在其上发送什么完全取决于应用程序。
Flask-SocketIO还为事件处理程序创建了一个接近常规视图函数的环境,包括创建应用程序和请求上下文。然而,文档中解释了一些重要的例外情况。
https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent