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)
參數 | 說明 |
---|---|
子協定
|
類型: |
標頭 (headers)
|
類型: |
原始程式碼位於 starlette/websockets.py
99 100 101 102 103 104 105 106 107 108 109 |
|
receive_text async
¶
receive_text()
原始程式碼位於 starlette/websockets.py
115 116 117 118 119 120 |
|
receive_bytes async
¶
receive_bytes()
原始程式碼位於 starlette/websockets.py
122 123 124 125 126 127 |
|
receive_json async
¶
receive_json(mode='text')
參數 | 說明 |
---|---|
模式 (mode)
|
類型: |
原始程式碼位於 starlette/websockets.py
129 130 131 132 133 134 135 136 137 138 139 140 141 |
|
iter_text async
¶
iter_text()
原始程式碼位於 starlette/websockets.py
143 144 145 146 147 148 |
|
iter_bytes async
¶
iter_bytes()
原始程式碼位於 starlette/websockets.py
150 151 152 153 154 155 |
|
iter_json async
¶
iter_json()
原始程式碼位於 starlette/websockets.py
157 158 159 160 161 162 |
|
send_text async
¶
send_text(data)
參數 | 說明 |
---|---|
資料 (data)
|
類型: |
原始程式碼位於 starlette/websockets.py
164 165 |
|
send_bytes async
¶
send_bytes(data)
參數 | 說明 |
---|---|
資料 (data)
|
類型: |
原始程式碼位於 starlette/websockets.py
167 168 |
|
send_json async
¶
send_json(data, mode='text')
參數 | 說明 |
---|---|
資料 (data)
|
類型: |
模式 (mode)
|
類型: |
原始程式碼位於 starlette/websockets.py
170 171 172 173 174 175 176 177 |
|
close async
¶
close(code=1000, reason=None)
參數 | 說明 |
---|---|
代碼 (code)
|
類型: |
原因 (reason)
|
類型: |
原始程式碼位於 starlette/websockets.py
179 180 |
|
當客戶端斷線時,會引發 WebSocketDisconnect
例外,您可以捕捉它。
您可以直接從 fastapi
導入它。
from fastapi import WebSocketDisconnect
fastapi.WebSocketDisconnect ¶
WebSocketDisconnect(code=1000, reason=None)
基底:Exception
參數 | 說明 |
---|---|
代碼 (code)
|
類型: |
原因 (reason)
|
類型: |
原始程式碼位於 starlette/websockets.py
20 21 22 |
|
WebSockets - 附加類別¶
用於處理 WebSockets 的附加類別。
由 Starlette 直接提供,但您可以從 fastapi
導入它。
from fastapi.websockets import WebSocketDisconnect, WebSocketState
fastapi.websockets.WebSocketDisconnect ¶
WebSocketDisconnect(code=1000, reason=None)
基底:Exception
參數 | 說明 |
---|---|
代碼 (code)
|
類型: |
原因 (reason)
|
類型: |
原始程式碼位於 starlette/websockets.py
20 21 22 |
|