1 安装 geventwebsocket
pip install gevent-websocket
视频地址:www.bilibili.com/video/BV1Q7…
2 前端代码
<div id="mesg" style="width: 400px;height: 400px;background: #aaaaaa;font-size: 18px;color: #e51c23"></div>
<script type="application/javascript">
{# 使用ws协议 #}
var ws =new WebSocket("ws://127.0.0.1:8899/ws")
ws.onmessage = function (data){
console.log(data);
var ptag = document.createElement("p");
ptag.innerText =data.data;
document.getElementById("mesg").appendChild(ptag)
}
function send_msg(){
var msg = document.getElementById("inputmsg").value;
ws.send(msg)
}
</script>
3 后端代码
from flask import Flask,render_template,request
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
from geventwebsocket.websocket import WebSocket
import pprint
app =Flask(__name__)
# 将用户加入到用户列表存起来
user_socket_list =[]
@app.route("/ws")
def ws():
try:
user_socket = request.environ.get("wsgi.websocket") # type:WebSocket
user_socket_list.append(user_socket)
print(user_socket_list)
print("当前用户数量:%d"%len(user_socket_list))
if user_socket:
# print(user_socket)
# print(type(user_socket))
while True:
msg =user_socket.receive()
for user in user_socket_list:
try:
user.send("用户[%s]: %s"%(user,msg))
except:
print("用户不存在")
continue
print(msg)
except:
print("建立连接失败!!")
return
@app.route("/")
def index():
return render_template("ws.html")
# 运行Flask
if __name__ == '__main__':
# app.run(debug=False)
http_serv = WSGIServer(("0.0.0.0", 8899), app, handler_class=WebSocketHandler)
http_serv.serve_forever()