WebSocket协议
用这个协议最方便的就是,服务器主动向客户端推送信息。客户端也可以主动向服务器发送信息。属于应用层协议,在握手阶段还是使用了HTTP的协议。
在普通的连接过程中,HTTP通过Request请求来界定,一个Request得到一个Response,在HTTP1.0中,这次HTTP请求就已经结束了。
在 HTTP1.1 中进行了改进,使得有一个 keep-alive,也就是说,在一个 HTTP 连接中,可以发送多个 Request,接收多个 Response。但是请记住 Request = Response, 在 HTTP 中永远是这样,也就是说一个 Request 只能有一个 Response。而且这个 Response 也是被动的,不能主动发起。 可以看到这两种方式都体现出了HTTP协议的被动性,也就是说服务端不能主动联系客户端,只能有客户端发起。而Websocket就解决了这个问题,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端了。
1、安装Websocket
通过命令:
pip install flask-socketio
pip install websocket-gevent
(第二条这条命令部分机子是需要的,有些环境不需要,具体原因不大清楚,笔者在进行项目时需要安装这两个,按道理第一个就够了。)
安装flask_socketio模块实现了Flask对websocket的封装,从而允许建立在flask上的应用的服务端和客户端建立全双工通信。
2、启动socketio的方式
原flask下是通过 app.run启动的,现在需要进一步封装flask。通过如下代码进行启动项目:
socketio.run(app, debug=True,host='127.0.0.1',port=11000)
|