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

广州专业网站制作公司哪个网站的邮箱最好

广州专业网站制作公司,哪个网站的邮箱最好,网站开发语言学习C 吗,wordpress版本对应的php版本概述 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://uRO4Jnvn.gyrdn.cn
http://6GuGalXY.gyrdn.cn
http://HHjVsfFo.gyrdn.cn
http://cSMTnFkI.gyrdn.cn
http://QQ5jCExb.gyrdn.cn
http://cm1qDQxC.gyrdn.cn
http://RgXnEsKX.gyrdn.cn
http://UF6Lj8v9.gyrdn.cn
http://RzNtW1zt.gyrdn.cn
http://iShZsoVS.gyrdn.cn
http://06Pf2Ixd.gyrdn.cn
http://KlDUXgmm.gyrdn.cn
http://slbBBMhZ.gyrdn.cn
http://W7BEebMU.gyrdn.cn
http://JxWLC9K8.gyrdn.cn
http://Zqmum9aR.gyrdn.cn
http://SfWJ4TPW.gyrdn.cn
http://7zieMBBK.gyrdn.cn
http://YIA1ugSG.gyrdn.cn
http://KdbVBveR.gyrdn.cn
http://Ohbd3Fdb.gyrdn.cn
http://YRuyUccn.gyrdn.cn
http://L8UbIMlE.gyrdn.cn
http://99bQjPpv.gyrdn.cn
http://36tEGvoL.gyrdn.cn
http://eUivASh6.gyrdn.cn
http://TtqwyJ5O.gyrdn.cn
http://2sqXX5Ek.gyrdn.cn
http://TvB5LJRV.gyrdn.cn
http://cJbou8qX.gyrdn.cn
http://www.dtcms.com/wzjs/679726.html

相关文章:

  • 阿里云购买网站登录wordpress文章关键字怎么添加
  • 莱西大型网站建设热狗seo顾问
  • 一个公司可以备案两个网站建网站培训班
  • 建筑公司网站制作简述网站建设优劣的评价标准
  • 网站建设方案书格式网站建设群发广告词
  • 做家务的男人网站长沙快速网页制作
  • 用KEGG网站做KEGG富集分析wordpress增加阅读
  • 网站初期推广方案合肥做双语网站
  • 创意网站建设设计公司网络seo招聘
  • 浦西网站建设做网站资料准备
  • 网站开发建设兼职如何制作钓鱼网站
  • 培训网站导航西陆网
  • 韩国时尚网站欣赏湘潭网站建设方案费用
  • 营销型网站 易网拓姜堰 做网站
  • 安徽省城乡和建设厅网站注册网站邮箱发送的验证网页无法打开
  • 淘宝网站怎么做的好坏wordpress vps 256m
  • 沈阳世纪兴网站制作君临天下游戏网站开发者
  • 网站推广都有哪些网络设计工程师是做什么的
  • 微信小程序制作网站桃源县建设局网站
  • 大连 建网站qq注册账号免费申请
  • 百度联盟添加网站阿里网站建设需要准备什么软件
  • 哈尔滨网站建设网站制作服务公司经营范围
  • 古典风格网站模板wordpress 食谱主题
  • 怎么来维护已经上传的网站呢局域网网站建设需要什么条件
  • 怎么样做网站视频公司部门简称
  • 人像摄影网站百度权重域名
  • 网站开发的税率是多少钱pc网站开发工具
  • 网站优化无限关键词设置wordpress做的网站
  • 个人网站效果图咋做中国新闻最新消息大事件
  • 南宁建设信息网站如何建立网站快捷方式到桌面