WebSockets
Client Plugin
Ktor Client 中的 WebSockets
必要的相依性:io.ktor:ktor-client-websockets
程式碼範例: client-websockets
用於用戶端的 Websockets 外掛程式可讓您處理與伺服器交換訊息的 WebSocket 工作階段。
NOTE
並非所有引擎都支援 WebSockets。如需支援引擎的概覽,請參閱限制。
新增相依性
若要使用 WebSockets,您需要在建置指令碼中包含 ktor-client-websockets 構件:
Kotlin
Groovy
XML
TIP
若要進一步了解 Ktor 用戶端所需的構件,請參閱新增用戶端相依性
。 了解如何將用戶端相依性新增至現有專案。
配置
您可以選擇透過在 install 區塊中傳遞 WebSockets.Config 支援的屬性來配置外掛程式。
Frame (框架) 大小。 Long 格式指定 ping 之間的持續時間。 Duration 格式指定 ping 之間的持續時間。 pingInterval 與 pingIntervalMillis 屬性不適用於 OkHttp 引擎。若要設定 OkHttp 的 ping 間隔,您可以使用引擎配置:
kotlin
在以下範例中,WebSockets 外掛程式配置了 20 秒(20_000 毫秒)的 ping 間隔,以自動發送 ping 框架並保持 WebSocket 連線:
kotlin
使用 WebSocket 工作階段
用戶端的 WebSocket 工作階段由 DefaultClientWebSocketSession 介面表示。此介面公開了可讓您發送與接收 WebSocket 框架以及關閉工作階段的 API。
存取 WebSocket 工作階段
HttpClient 提供兩種主要方式來存取 WebSocket 工作階段:
webSocket() 函式接受
DefaultClientWebSocketSession作為區塊引數。kotlin- webSocketSession() 函式回傳
DefaultClientWebSocketSession執行個體,並允許您在runBlocking或launch作用域之外存取工作階段。
處理 WebSocket 工作階段
在函式區塊內,您可以為指定的路徑定義處理常式。區塊內可以使用以下函式與屬性:
send() 函式向伺服器發送文字內容。 outgoing 屬性存取用於發送 WebSocket 框架的頻道。框架由 Frame 類別表示。 incoming 屬性存取用於接收 WebSocket 框架的頻道。框架由 Frame 類別表示。 close() 函式發送帶有指定原因的關閉框架。 