概述
WebSocket是一种网络通信协议,它在2011年被IETF(互联网工程任务组)标准化为RFC 6455。WebSocket协议允许服务器与客户端之间进行全双工通信,即客户端和服务器可以在任何时候发送消息,而不需要像传统的HTTP请求那样等待响应。
WebSocket的主要特点包括:
- 全双工通信:客户端和服务器可以在任何时候发送消息,实现了真正的实时通信。
- 基于TCP协议:WebSocket在传输层使用TCP协议,保证了数据的可靠传输。
- 握手过程:WebSocket连接的建立是通过HTTP协议的升级请求来完成的。客户端发起一个普通的HTTP请求,并在请求头中包含升级到WebSocket的请求。如果服务器支持WebSocket,它会同意升级,并返回一个101 Switching Protocols的响应,之后连接就会使用WebSocket协议。
- 轻量级:WebSocket消息格式相对简单,减少了数据传输的开销。
- 跨域支持:WebSocket协议支持跨源通信,允许不同域的网页应用进行数据交换。
- 持久连接:一旦WebSocket连接建立,它就会保持开放状态,直到客户端或服务器显式地关闭连接。
WebSocket的应用场景包括但不限于:
- 实时消息传递:如即时通讯、聊天室等。
- 实时游戏:多人在线游戏、实时对战游戏等。
- 实时数据流:如实时股票报价、实时监控系统等。
- 实时协作工具:如在线白板、文档协作编辑等。
在现代Web应用中,WebSocket已经成为实现实时互动功能的重要技术之一。随着HTML5的普及,WebSocket得到了广泛的支持,几乎所有的现代浏览器都支持WebSocket协议。
websocket应用示例
这里计划使用FastAPI实现一个WebSocket服务并创建一个Python客户端来接收消息。
安装依赖:
pip install fastapi[all] websockets
服务端程序
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from fastapi.responses import HTMLResponse
from typing import List
app = FastAPI()
html