一个 WebSocket 客户端的具体实现,通过封装 Apple 的 URLSessionWebSocketTask
来实现。
WebSocket
的公共接口是一个简单的结构体,其公共方法以闭包的形式公开。这种设计的原因是为了方便在你的代码中注入伪造的 WebSocket 以进行测试。
实际的实现是 SystemWebSocket
,但此类型不是公开可访问的。相反,你可以通过 WebSocket.system(url:)
或 WebSocket.system(request:)
来访问它。SystemWebSocket
尽力模仿网络浏览器 WebSocket
的文档化行为。请将任何偏差报告为错误。
WebSocket
公开了一个简单的 API,并大量使用了 Swift Concurrency。
要使用 WebSocket,请将依赖项添加到你的 Package.swift 文件中
let package = Package(
dependencies: [
.package(
url: "https://github.com/shareup/websocket-apple.git",
from: "4.0.0"
)
]
)
// `WebSocket` starts connecting to the specified `URL` immediately.
let socket = WebSocket.system(url: url(49999))
// Wait for `WebSocket` to be ready to send and receive messages.
try await socket.open()
// Send a message to the server
try await socket.send(.text("hello"))
// Receive messages from the server
for await message in socket.messages {
print(message)
}
try await socket.close()
websocket-apple
目录swift test
运行测试此库包含来自 WebSocketKit 和 SwiftNIO 的代码,其使用取决于它们的许可证。