RxStarscream
为 Starscream 提供了一个轻量级的扩展,用于使用 RxSwift 可观察者跟踪 WebSocket 事件。
安装
CocoaPods
RxStarscream 通过 CocoaPods 提供。将以下行添加到您的 Podfile
pod 'RxStarscream'
然后执行
pod install
RxStarscream 版本与 Swift 版本。
下面是一个表格,展示您应该为您的 Swift 版本使用哪个版本的 RxStarscream。
Swift | RxStarscream | RxSwift |
---|---|---|
>= 4.2 | >= 0.10 | >= 4.3 |
< 4.2 | >= 0.8 | >= 4.0 |
3.X | 0.7 | 3.0.0 - 3.6.1 |
Carthage
将以下内容添加到您的Cartfile
github "RxSwiftCommunity/RxStarscream"
然后执行
carthage update
使用示例
通过CocoaPods或Carthage安装后,您应该导入框架。
import RxStarscream
一旦导入,您就可以连接到您的WebSocket服务器。
socket = WebSocket(url: URL(string: "ws://127.0.0.1:8080/")!)
socket.connect()
现在您可以为所有的websocket事件进行订阅
socket.rx.response.subscribe(onNext: { (response: WebSocketEvent) in
switch response {
case .connected:
print("Connected")
case .disconnected(let error):
print("Disconnected with optional error : \(error)")
case .message(let msg):
print("Message : \(msg)")
case .data(_):
print("Data")
case .pong:
print("Pong")
}
}).disposed(by: disposeBag)
或仅订阅连接事件
socket.rx.connected.subscribe(onNext: { (isConnected: Bool) in
print("Is connected : \(isConnected)")
}).disposed(by: disposeBag)
或仅订阅消息事件
socket.rx.text.subscribe(onNext: { (message: String) in
print("Message : \(message)")
}).disposed(by: disposeBag)
示例项目
有一个示例项目(您需要运行 carthage update
以进行编译)。
示例项目使用echo服务器 - https://www.websocket.org/echo.html
祝您玩得开心!
感谢
RxSwift Slack频道中的每个人。
贡献
欢迎提交bug报告和pull请求。
许可证
RxStarscream遵循MIT许可证。有关更多信息,请参阅LICENSE文件。