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

天津高端网站制作百度搜索引擎的网址

天津高端网站制作,百度搜索引擎的网址,机票售票网站开发,网站建设报价方案模板概述 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/7348.html

相关文章:

  • 网站的三种基本类型网页设计素材网站
  • wordpress acf图片插件上海网优化seo公司
  • 网站设计超链接怎么做怎么申请自己的域名
  • 微信h5手机网站seo博客推广
  • 做哪些网站不受法律保护携程: 2023年旅行搜索上涨超900%
  • 好看简单易做的网站新网站 seo
  • 做民宿最大的网站广告公司推广方案
  • wordpress网站名称函数百度的排名规则详解
  • 做片视频在线观看网站网络推广网站排行榜
  • 网络推广和优化是什么意思seo网站分析工具
  • 建设工程消防信息网站国外常用的seo站长工具
  • 网站漂浮客服代码抖音排名优化
  • 网站建设伍际网络百度竞价被点击软件盯上
  • iis做网站跳转点击seo软件
  • 网站建设中手机版推广软件赚钱的app
  • 东莞市网站公司如何提高网站seo排名
  • 靠谱的建站正规公司百色seo快速排名
  • 网络教学网站建设百度手机关键词排名工具
  • 大连做网站公司排行榜seo综合查询
  • 一分钟建站快速提升网站关键词排名
  • 响应式网站排名推广平台
  • wordpress模板怎么改织梦seo推广优化外包价格
  • 网站运营商查询宁波seo网页怎么优化
  • 企业网站建设需求调查中文搜索引擎网站
  • 形容网站做的好处福鼎网站优化公司
  • 做网站素材图片seo规则
  • 郑州网站建设汉狮金融网站推广圳seo公司
  • wordpress微信支付seo诊断报告
  • 一条龙网站建设哪家专业现在怎么做网络推广
  • sae wordpress 安装主题seo教程技术整站优化