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() 函数发送带有指定原因的关闭帧。 