FastAPI学习-31 FastAPI 如何集成 socket.io

前言

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

相关推荐

  1. 【Python】FastAPI学习记录(二)

    2024-02-21 19:24:01       67 阅读
  2. fastapi 实践

    2024-02-21 19:24:01       53 阅读
  3. fastapi框架

    2024-02-21 19:24:01       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 19:24:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 19:24:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 19:24:01       87 阅读
  4. Python语言-面向对象

    2024-02-21 19:24:01       96 阅读

热门阅读

  1. vue3父子组件传值

    2024-02-21 19:24:01       59 阅读
  2. Go 语言中,`rune(a)` 将 `a` 转换为 `rune` 类型

    2024-02-21 19:24:01       49 阅读
  3. SQL Server查询计划(Query Plan)——文本查询计划

    2024-02-21 19:24:01       49 阅读
  4. OutLook-2010——管理邮箱的工具

    2024-02-21 19:24:01       55 阅读
  5. 飞常准查航班小程序采集

    2024-02-21 19:24:01       51 阅读
  6. SpringBoot+WebSocket实现即时通讯(三)

    2024-02-21 19:24:01       49 阅读
  7. Android引入aar包的方法

    2024-02-21 19:24:01       49 阅读
  8. QT6不同场景下的一些代码

    2024-02-21 19:24:01       50 阅读