首页 > 其他分享 >FastAPI学习-31 FastAPI 如何集成 socket.io

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

时间:2024-02-04 10:01:46浏览次数:26  
标签:socket io socketio python FastAPI 31 版本 fastapi

前言

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学习-31 FastAPI 如何集成 socket.io_html

说明fastapi-socketio 与 js版本客户端不匹配,二者不能正常通信。兼容版本说明

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

匹配正确版本

先查看安装的 python-socketio 和 python-engineio 版本,版本有点高,于是我降级了一下版本

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

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/

版本匹配后,重新启动服务就可以看到客户端连接服务端成功,输出日志

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

服务端也启动正常

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


标签:socket,io,socketio,python,FastAPI,31,版本,fastapi
From: https://blog.51cto.com/u_15249893/9576862

相关文章

  • 2024.1.31 总结
    上午接到姜\(sir\)通知后就开始召集讲题组并开始写题解。\(B\)属于结论题,题解和我赛时的结论不一样,然后就都证明了一下。Link\(D\)有一点难,借鉴了Register_int的题解,\(dp\)那段卡了一小段时间。Link晚上吴队讲题(实验舱\(06\))\(A\)其实很简单,只需要统计奇数度数的点,最......
  • hdu 1312 Red and Black (BFS模板题)
    Problem-1312(hdu.edu.cn)BFS模板题#include<iostream>#include<queue>usingnamespacestd;typedeflonglongll;constintINF=0x3f3f3f3f;intwx,hy,num;charroom[25][25];#defineCHECK(x,y)(x>=0&&x<wx&&y>=0&&am......
  • 寒假训练1/31
    寒假训练2024/1/31今天主要是补题。codeforce161E-IncreasingSubsequences题意:T组询问,每次给你一个X($[2,10^{18}]$),你需要构造一个长度不超过200,值域$∈[−109,109]$的序列使得其单调上升子序列个数恰为X(包含空子序列且不同位置的相同上升子序列算作不同的上升子序......
  • [转帖]彻底搞明白 GB2312、GBK 和 GB18030
    https://www.zhihu.com/people/lion-89 日常工作的过程中,关于字符编码的问题经常让人头疼不已,这篇文章就来捋一捋关于GB2312、GBK、GB18030相关的知识以及它们和Unicode的关系简介GB23121980年,中国发布了第一个汉字编码标准,也即GB2312,全称《信息交换用汉字......
  • Poj3126 Prime Path (BFS+筛素数)
    #include<iostream>#include<queue>#include<cstring>constintN=10010;intt,aa,bb,prime[N],vis[N],step[N];usingnamespacestd;voidprime_(){//埃式筛法prime[0]=prime[1]=1;for(inti=2;i<10000;i++){if(prime[i])contin......
  • P4231 三步必杀
    原题链接算是差分的进阶吧,这道题算是差分+差分的题目,即要两次差分再求前缀和。先来解释原理:给定一个数组a长度为n,初始都为0。接下来m个操作:1、在l~r的范围上加上一个首项为s,末项为e的等差数列。接着求出m次操作后数组a的各项值例如【0,0,0,0,0,0,0,0,0,0】的数组一次操作为在4~8的......
  • Socket.D 协议的开发缘由
    为什么搞个新协议?2021年时,想为Solon生态提供一种MVC体验的Socket和WebSocket开发方式。这个想法,要求消息“能路由”、“有元信息”、“可建立关联性”。于是就开发了Socket.D早期版本(算是草案版)。经过两年的实践,其重新定义为:是想要有一种更简单、更通用的通讯方式。......
  • 2024.1.31题目选讲
    CF1753C首先求出整个数列有多少个0,设为sum0,再求出\(1--sum0\)中有多少个1,设为\(sum1\)显然,我们的目标就是把\(1--sum0\)中全部变成0那么考虑有意义的一步的期望次数,由于线性性,可以全部加起来设左边还有x个1(左边就是\(1--sum0\))交换到的概率为\(\dfrac{x^2}{n(n+1)/2}\),那么......
  • 1.31学习进度
    第一章1.sparkshufflemap和reduce在shuffle过程中,提供数据的称之为ma段,几首数据的称之为reduce端在spark的两个阶段中,总是前一个阶段产生一批map提供数据,下一阶段喊声一批reduce接收数据2.spark提供2中shuffle管理器   hashshufflemanager   sortshufflemanager3.hashshuf......
  • 强连通分量(SCC,Strongly Connected Components)学习笔记 & edited in 2024.01.31
    更新日志upd2024.01.31写好文章基本内容upd2024.01.31发表于洛谷upd2024.02.01同步发表于CSDNupd2024.02.01同步发表于博客园cnblogs强连通分量(SCC,StronglyConnectedComponents)定义强连通有向图(DAG)中若其中两点$x$,$y$能彼此到达(不一定是直接连边),称$x$和......