RxWebSocket

Build Status codecov PRs welcome Carthage compatible SPM compatible Version License Platform


用于 WebSocket 的响应式扩展。

一个基于 Starscream 的轻量级抽象层,使其具有响应性。

安装

RxWebSocket 可通过 CocoaPodsCarthage 获取。要安装它,只需将以下行添加到您的依赖文件中

Cocoapods

pod "RxWebSocket"

Carthage

github "fjcaetano/RxWebSocket"

用法

每个 websocket 事件都将发送到 stream,它是一个 Observable<StreamEvent>

  public enum StreamEvent {
    case connect
    case disconnect(Error?)
    case pong
    case text(String)
    case data(Data)
  }

您可以通过订阅 text 属性来接收和发送文本事件

let label = UILabel()
socket.rx.text
    .bind(to: label.rx.text)


sendButton.rx.tap
    .flatMap { textField.text ?? "" }
    .bind(to: socket.rx.text)

更多详情,请查看示例项目。

贡献

克隆项目后,使用以下命令拉取所有子模块

git submodule update --init --recursive

要求

RxWebSocket 依赖以下内容进行开发

要轻松安装所有依赖项,只需运行

./install_dependencies.sh

这将安装所有依赖项和虚拟环境(如果需要)。

运行测试

Xcode 和 Fastlane 将负责启动和停止用于测试的 websocket 回显服务器。但是,如果您发现测试超时,这通常表明服务器未运行。 如果是这样,您可以运行以下命令来管理它

./server.sh {start|stop|restart|status}

这将告诉 wstests 在 127.0.0.1:9000 上启动回显服务器。 如果由于任何原因该端口对您不可用,您可以在 server.sh 文件中更改它。

升级到新的 Swift 版本

升级到新的 Swift 版本需要同时升级依赖项。 由于 RxWebSocket 通过 Cocoapods、Carthage 和 Swift Package Manager 分发,因此必须在三个平台对应的 spec 文件中升级依赖项

Cocoapods

在 RxWebSocket.podspec 中,更新 swift_version 和文件末尾的依赖项版本

Carthage

Cartfile 中升级依赖项的版本

Swift Package Manager

Package.swift 中升级依赖项的版本

内务处理

在提交之前,请确保至少在 Fastlane 上运行 test lane。 这将运行所有 iOS 测试。

如果您想彻底一点(推荐且赞赏),请运行 ci lane,这与 Travis 在测试 PR 时运行的 lane 相同。 此 lane 将运行 iOS、tvOS 和 macOS 的测试,并为三个包管理器检查项目。 如果此 lane 通过,您可以 100% 确定一切运行都尽可能顺利。

需要帮助

您是否喜欢 RxWebsocket 并且积极开发使用它的应用程序? 如果您能帮助我们不断改进它,我们将非常高兴! 随时给我们留言或立即开始贡献!

许可证

RxWebSocket 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。