适用于 Apple 操作系统的 Phoenix Channels 客户端

(macOS、iOS、iPadOS、tvOS 和 watchOS)

一个用于连接 Apple 操作系统上的 Phoenix Channels 并与之交互的软件包,使用 Swift 编写,并利用了内置的 WebSocket 支持和 Swift 并发特性。

SocketChannel 的公共接口是简单的结构体,它们的公共方法以闭包的形式暴露。 这种设计的目的是为了方便在您的代码中注入伪造的 sockets 和 channels 以进行测试。

Phoenix socket 和 channel 的实际实现是 PhoenixSocketPhoenixChannel,但这些不是公开可用的。 相反,您可以通过 Socket.production(url:) 工厂选择使用它们。

仅兼容 Phoenix channels vsn=2.0.0。

安装

要使用 Phoenix,请将依赖项添加到您的 Package.swift 文件中

let package = Package(
  dependencies: [
    .package(
      url: "https://github.com/shareup/phoenix-apple.git",
      from: "8.0.0"
    )
  ]
)

用法

import Phoenix

let socket = Socket.production(url: URL(string: "wss://example.com/socket")!)
await socket.connect()

let channel = await socket.channel("room:123", [:])

let messagesTask = Task {
  for await message in channel.messages() {
    print(message)
  }
}

let joinResponse = try await channel.join()

try await channel.send("one-off-message", [:])
let response = try await channel.request("message-needing-reply", [:])
try await channel.leave()

messagesTask.cancel()

测试

使用 Xcode

  1. 在您的终端中,导航到 phoenix-apple 目录
  2. 使用 Xcode 打开 phoenix-apple 目录
  3. 确保构建目标是 macOS
  4. Product -> Test

使用 swift test

  1. 在您的终端中,导航到 phoenix-apple 目录
  2. 使用 swift test 运行测试