赞
踩
socket.io就是基于 websocket 封装的一个库,主要特点是能够进行实时的双向通讯,主要应用场景有实时的聊天,数据实时分析,数据传输,文件协同合作。
有个 socket.io 的fastapi-socketio官方库,该库依赖传统的 python-socketio 库
pip install fastapi-socketio
fastapi 服务端代码demo
from fastapi import FastAPI
from fastapi_socketio import SocketManager
import uvicorn
app = FastAPI()
socket_manager = SocketManager(app=app, mount_location="/ws")
@socket_manager.on('connect',namespace="/ws")
async def connect(sid, environ):
print(sid)
print(environ)
if __name__ == "__main__":
uvicorn.run(app, host="localhost", port=8000)
web 前端页面
<!DOCTYPE html> <html> <head> <title>web</title> <meta charset="UTF-8"> <script type="text/javascript" src="/static/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://cdn.bootcss.com/socket.io/1.5.1/socket.io.min.js"></script> </head> <body> <div id="terminal"></div> </body> <script> $(document).ready(function () { // 连接服务器 const socket = io('ws://localhost:8000/ws', { transports: ['websocket'], path:'/ws/socket.io' }); // 连上后console输出 socket.on("connect", () => { console.log("Connected", socket.id) }); }) </script> </html>
如果服务器出现报错:The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)
说明fastapi-socketio 与 js版本客户端不匹配,二者不能正常通信。兼容版本说明
先查看安装的 python-socketio 和 python-engineio 版本,版本有点高,于是我降级了一下版本
pip install --upgrade python-engineio==3.13.2
pip install --upgrade python-socketio==4.6.0
socket.io.min.js
版本也需要找到对应的https://cdn.bootcss.com/socket.io/1.5.1/socket.io.min.js
全部的 socket.io.js
版本可以在这个地址找到https://cdn.socket.io/
版本匹配后,重新启动服务就可以看到客户端连接服务端成功,输出日志
服务端也启动正常
参考相关教程资料https://blog.csdn.net/wangsenling/article/details/128568432
参考相关教程资料https://blog.csdn.net/momoyaoquaoaoao/article/details/127256068
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。