项目配置
系统:windows
Flask 1.1.2
Flask-Sockets 0.2.1
Werkzeug 1.0.1
提示:以下是本篇文章正文内容,下面案例可供参考
一、服务端
from flask import Flask
from flask_sockets import Sockets
import time
app = Flask(__name__)
sockets = Sockets(app)
@sockets.route('/echo')
def echo_socket(ws):
while not ws.closed:
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
ws.send(now) #发送数据
time.sleep(0.5)
@app.route('/')
def hello():
return 'Hello World!'
if __name__ == "__main__":
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
server = pywsgi.WSGIServer(('127.0.0.1', int(5000)), app, handler_class=WebSocketHandler)
print('server start')
server.serve_forever()
二、web客户端
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script>
</head>
<body>
<div id="time"></div>
<script>
var ws = new WebSocket("ws://127.0.0.1:5000/echo");
ws.onmessage = function (event) {
content = document.createTextNode(event.data);
$("#time").html(content);
};
</script>
</body>
</html>
运行效果:
三、python客户端
import websockets
import asyncio
async def hello():
async with websockets.connect("ws://127.0.0.1:5000/echo")as ws:
while True:
data = await ws.recv()
await ws.send("Hello, World")
await asyncio.sleep(0.5)
print ("Received:'%s'" % data)
loop = asyncio.get_event_loop()
loop.run_until_complete(hello())
运行效果:
Received:'2022-01-26 20:51:34'
Received:'2022-01-26 20:51:34'
Received:'2022-01-26 20:51:35'
Received:'2022-01-26 20:51:35'
Received:'2022-01-26 20:51:36'
Received:'2022-01-26 20:51:36'
Received:'2022-01-26 20:51:37'
Received:'2022-01-26 20:51:37'
总结
版本安装错误会导致很多问题,请按照以上配置进行测试。