WebSockets¶
在定义 WebSockets 时,通常声明一个类型为 WebSocket
的参数,并使用它从客户端读取数据并向其发送数据。
它由 Starlette 直接提供,但您可以从 fastapi
中导入它。
from fastapi import WebSocket
提示
当您想要定义应与 HTTP 和 WebSockets 都兼容的依赖项时,您可以定义一个参数,该参数采用 HTTPConnection
而不是 Request
或 WebSocket
。
fastapi.WebSocket ¶
WebSocket(scope, receive, send)
参数 | 描述 |
---|---|
scope
|
类型: |
receive
|
类型: |
send
|
类型: |
源代码位于 starlette/websockets.py
中
26 27 28 29 30 31 32 |
|
url_for ¶
url_for(name, /, **path_params)
参数 | 描述 |
---|---|
名称
|
类型: |
**path_params**
|
类型: |
源代码位于 starlette/requests.py
177 178 179 180 |
|
receive 异步
¶
receive()
接收 ASGI WebSocket 消息,确保有效的状态转换。
源代码位于 starlette/websockets.py
中
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
send 异步
¶
send(message)
发送 ASGI WebSocket 消息,确保有效的状态转换。
参数 | 描述 |
---|---|
消息
|
类型: |
源代码位于 starlette/websockets.py
中
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
accept 异步
¶
accept(subprotocol=None, headers=None)
参数 | 描述 |
---|---|
子协议
|
类型: |
头部
|
类型: |
源代码位于 starlette/websockets.py
中
99 100 101 102 103 104 105 106 107 108 109 |
|
receive_text 异步
¶
receive_text()
源代码位于 starlette/websockets.py
中
115 116 117 118 119 120 |
|
receive_bytes 异步
¶
receive_bytes()
源代码位于 starlette/websockets.py
中
122 123 124 125 126 127 |
|
receive_json 异步
¶
receive_json(mode='text')
参数 | 描述 |
---|---|
模式
|
类型: |
源代码位于 starlette/websockets.py
中
129 130 131 132 133 134 135 136 137 138 139 140 141 |
|
iter_text 异步
¶
iter_text()
源代码位于 starlette/websockets.py
中
143 144 145 146 147 148 |
|
iter_bytes 异步
¶
iter_bytes()
源代码位于 starlette/websockets.py
中
150 151 152 153 154 155 |
|
iter_json 异步
¶
iter_json()
源代码位于 starlette/websockets.py
中
157 158 159 160 161 162 |
|
send_text 异步
¶
send_text(data)
参数 | 描述 |
---|---|
数据
|
类型: |
源代码位于 starlette/websockets.py
中
164 165 |
|
send_bytes 异步
¶
send_bytes(data)
参数 | 描述 |
---|---|
数据
|
类型: |
源代码位于 starlette/websockets.py
中
167 168 |
|
send_json 异步
¶
send_json(data, mode='text')
参数 | 描述 |
---|---|
数据
|
类型: |
模式
|
类型: |
源代码位于 starlette/websockets.py
中
170 171 172 173 174 175 176 177 |
|
close 异步
¶
close(code=1000, reason=None)
参数 | 描述 |
---|---|
代码
|
类型: |
原因
|
类型: |
源代码位于 starlette/websockets.py
中
179 180 |
|
当客户端断开连接时,会引发 WebSocketDisconnect
异常,你可以捕获它。
你可以直接从 fastapi
中导入它。
from fastapi import WebSocketDisconnect
fastapi.WebSocketDisconnect ¶
WebSocketDisconnect(code=1000, reason=None)
WebSockets - 其他类¶
用于处理 WebSockets 的其他类。
由 Starlette 直接提供,但你可以从 fastapi
中导入它。
from fastapi.websockets import WebSocketDisconnect, WebSocketState
fastapi.websockets.WebSocketDisconnect ¶
WebSocketDisconnect(code=1000, reason=None)