websocket 是一种html5新的接口,以前服务器推送需要进行ajax等方式进行轮训,对服务器压力较高,随着新标准的推进,使用websocket在推送等方面已经是比较成熟了,并且各个浏览器对websocket的支持情况已经比较好了,只要不是太老古古董,对这些暂时不考虑。
使用websocket的时候,前端使用是比较规范的,js支持ws协议,感觉上类似于一个轻度封装的socket协议,只是以前需要自己维护socket的连接,现在能够以比较标准的方法来进行。
总的来说因为前端是js,所以后端对websocket支持最好的是socket.io,在搜索websocket相关的内容的时候感觉socket.io对这个的推广也是不少的,但是现在使用的是python,因为新学习python
事件不长,各个框架都在接触一点还是有好处了。
常用框架:
- uwsgi
- flask
- tornado
- django
下面几个都是一个回音壁程序,也就是接受前端js发过来的websocket信息,然后将websocket再原路返回
前端js:
1
2
3
4
5
6
|
var s =
new WebSocket(
"%s://%s/foobar/");
s.onopen =
function() {}
s.onmessage =
function(e) {}
s.onerror =
function(e) {}
s.onclose =
function(e) {}
s.send(value);
|
这几条就是常用的js使用websocket的代码,处理逻辑没有写,要看完整的看下面uwsgi的官方给的例子,我基本上是照搬的。连接回掉,获取信息回掉,错误回掉,关闭回掉,以及发送信息
uwsgi
官方文档已经很好了,第一个成功执行的websocket程序就是uwsgi,然后才慢慢的前端不变,然后后端找其他的方案,官方给的例子也是简单易懂的,例子在websockets_chat_async.py,从这个例子来看,只用uwsgi,需要维护太多的内容,html与python混在一起实在不太好看,所幸这个例子足够简单。
flask-uwsgi-websocket
|