python flask框架上增加websocket的功能

使用flask框架可以很方便处理http请求,但是现在我需要服务端主动推送一些数据给客户端,所以想到使用websocket,那么如何在flask基础上增加websocket的功能呢?


在这里使用的是geventwebsocket,安装模块在命令行窗口输入pip install gevent-websocket。
话不多说直接上代码:

image.png

从整体来看像是使用WSGIServer取代了Flask服务,Flask的对象作为参数传递给了WSGIServer,相当于Flask被包装起来了。


处理websocket关键代码

image.png

关键代码就是request.environ.get('wsgi.websocket'),通过它获取连接过来的websocket,得到它就能和客户端通信了。


测试

写一个客户端,关键代码如下:

image.png

websocket的地址为ws://127.0.0.1:3333/my_socket。其中端口3333对应服务端监听的端口,末尾的my_socket对应服务端@app.route("my_socket")


测试结果

image.png


结果表明客户端和服务端通信成功。


被遗忘的hello world

image.png

在浏览器中输入地址如下:

image.png

一切正常,websocket和http都能用,good。


演示站
上一篇:如何将windows系统中的文件传到linux系统?
下一篇:pycharm将项目导入到svn以及从svn中导出项目

发表评论