当前位置: 首页 > wzjs >正文

百度关键词优化专家郑州seo顾问外包公司

百度关键词优化专家,郑州seo顾问外包公司,全球只剩下朝鲜0确诊,聊城手机网站建设方案概述 WebSocket 是一种网络通信协议,允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接,实现了实时的数据传输。HTTP 协议有一个很大的缺点,通信只能由客户端发起,服务器返回响应后连接就会关闭&#xf…

概述

  • WebSocket 是一种网络通信协议,允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接,实现了实时的数据传输。
  • HTTP 协议有一个很大的缺点,通信只能由客户端发起,服务器返回响应后连接就会关闭,如果我们想要知道任务连续的状态变化的话,就需要通过轮询来获取状态,这种方法的效率就会非常低。
  • WebSocket需要维护连接,这需要额外的开销,包括内存和CPU,没有必要需求无需使用
  • WebSocket协议是一种可靠的、高效的、双向的、持久的通信协议,支持文本和二进制数据。

如何建立连接

+---------+                         +---------+
| Client  |                         | Server  |
+---------+                         +---------+|                                   || 1. HTTP GET (Upgrade request)     ||---------------------------------->||                                   || 2. HTTP 101 Switching Protocols   ||<----------------------------------||                                   || 3. WebSocket Connection Established ||<---------------------------------->||                                   |

WebSocket 连接的建立过程基于 HTTP 协议,我使用postman建立一个连接,打开握手详情,可以看到这些信息:

在这里插入图片描述
在这里插入图片描述

  1. 首先,客户端发送一个 HTTP GET 请求,包含以下关键头信息:

    • Upgrade: websocket:表示希望升级到 WebSocket 协议。

    • Connection: Upgrade:表示要求升级连接。

    • Sec-WebSocket-Key:一个随机生成的 Base64 编码字符串,用于验证服务器。

    • Sec-WebSocket-Version:指定 WebSocket 协议版本(通常为 13)。

  2. 服务器检查请求头,如果支持 WebSocket,返回 HTTP 101 状态码(Switching Protocols),并包含以下头信息:

    • Upgrade: websocket:确认升级到 WebSocket 协议。
    • Connection: Upgrade:确认连接升级。
    • Sec-WebSocket-Accept:基于客户端的 Sec-WebSocket-Key 计算的值,用于验证。

关于wss和ws

wswss 是 WebSocket 协议的两种不同形式,主要区别在于 安全性数据传输方式

wswss
特性非加密加密
协议普通 TCP基于 TLS/SSL 的 TCP
安全性数据明文传输,不安全数据加密传输,安全
适用场景内部网络、开发环境生产环境、敏感数据传输
默认端口80443
URL 前缀ws://wss://

简单实现

from fastapi import FastAPI, APIRouter, WebSocket, WebSocketDisconnectapp = FastAPI()
router = APIRouter(prefix='/demo', tags=['demo'])# WebSocket 端点
@router.websocket("/ws/{user_id}")
async def websocket_endpoint(websocket: WebSocket, user_id: str):# 接受客户端连接await websocket.accept()while True:try:# 接收客户端发送的消息data = await websocket.receive_text()# 打印接收到的消息print(f"Received message: {data}")# 将消息原样发送回客户端await websocket.send_text(f"Echo: {data}")except Exception as e:print(f"Error: {e}")breakapp.include_router(router)

实战-实现一个聊天室

import jsonfrom fastapi import FastAPI, APIRouter, WebSocket, WebSocketDisconnectapp = FastAPI()
router = APIRouter(prefix='/demo', tags=['demo'])class ConnectionManager:def __init__(self):self.active_connections: dict[str, WebSocket] = {}async def connect(self, websocket: WebSocket, user_id: str):await websocket.accept()self.active_connections[user_id] = websocketdef disconnect(self, user_id: str):if user_id in self.active_connections:del self.active_connections[user_id]async def send_message(self, message: str, user_id: str, target_user: str):# 向目标用户发送消息if websocket := self.active_connections.get(target_user):data = json.dumps({"message": message, "from_user": user_id})await websocket.send_text(data)manager = ConnectionManager()# WebSocket 端点
@router.websocket("/ws/{user_id}")
async def websocket_endpoint(websocket: WebSocket, user_id: str):await manager.connect(websocket, user_id)try:while True:data = await websocket.receive_text()data = json.loads(data)# 接收到消息后,向目标用户发送消息await manager.send_message(data.get("message"), user_id, data.get("target_user"))except WebSocketDisconnect:manager.disconnect(user_id)print(f"用户 {user_id} 断开连接")app.include_router(router)

这里使用了user_id作为标志,根据用户id向指定的对象发送消息,可以看到8888用户给6666用户发送了个hello,而6666用户也接收到了相应的消息
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/433537.html

相关文章:

  • 域名注册网站推荐推广网
  • 专业做旗袍花的网站是什么网站百度指数的搜索指数代表什么
  • 使用帝国备份王搬迁织梦网站营销型制作网站公司
  • 这么做网站百度客服投诉中心
  • 做视频哪个网站素材好app开发公司推荐
  • 成都网站优化网怎么做公众号
  • 房地产市场营销谷歌seo是什么职业
  • 做化妆品注册和注册的网站吗今天宣布疫情最新消息
  • wordpress post pageseo软件定制
  • 提供经营性网站备案百度导航最新版本
  • 简易企业网站深圳seo网站推广方案
  • 常州网站建设报价湖南优化推广
  • 吴苏南网站建设百度收录提交申请网站
  • 贵阳品牌网站建设公司seo模拟点击有用吗
  • 个人网页制作与网站建设seo咨询师
  • WordPress下级优化关键词可以选择哪个工具
  • 推进门户网站建设工作网店推广实训系统
  • 东营建设信息网站网络项目免费的资源网
  • 北京做网站比较大的公司北京网站建设公司哪家好
  • jsp酒店预订网站开发东莞营销推广公司
  • 化工网站建设推广国内手机怎么上google浏览器
  • 教做黏土手工的网站西安网约车
  • 做网站如何设计数据库企业营销型网站有哪些
  • mooc网站开发案例宁波seo推广服务
  • 成品网站怎样建设google下载安装
  • 微网站入口电子商务网站开发
  • 上海网站制作网站开发泉州网站seo公司
  • pc网站建设企业网站的在线推广方法有
  • 成都网站建设电话怎么样建一个网站
  • 巴中网站建设西安网站维护公司