# SRWebSocketManager **Repository Path**: PromiscuousYouth/SRWebSocketManager ## Basic Information - **Project Name**: SRWebSocketManager - **Description**: 基于SocketRocket封装的单例,可断开重连,定时发送心跳包 - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2018-03-30 - **Last Updated**: 2026-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SRWebSocketManager 基于 [SocketRocket](https://github.com/facebook/SocketRocket) 封装的 WebSocket 管理工具,提供单例模式和手动创建两种使用方式,支持自动重连、心跳机制、重连次数和间隔配置。 ## 功能特性 - **单例模式**:便捷的全局访问入口 - **手动创建**:灵活的对象管理方式 - **自动重连**:连接断开后自动尝试恢复 - **心跳机制**:定时发送心跳包保持连接活跃 - **状态枚举**:清晰的状态定义便于处理 - **代理模式**:丰富的事件回调接口 ## 环境要求 - iOS 8.0+ - Objective-C - Xcode 9.0+ - CocoaPods ## 安装配置 1. 将 `SRWebSocketManager` 文件夹拖入项目 2. 在 Podfile 中添加依赖: ```ruby pod 'SocketRocket' ``` 3. 执行安装命令: ```bash pod install ``` ## 使用方法 ### 单例模式 ```objective-c // 创建连接 [[LZWebSocketManager sharedManager] lz_connectWithUrl:@"ws://echo.websocket.org" delegate:self]; ``` ### 手动创建 ```objective-c // 不要创建为局部变量,否则会立即释放 self.webSocketManager = [[WebSocketManager alloc] init]; self.webSocketManager.delegate = self; self.webSocketManager.urlString = @"ws://echo.websocket.org"; [self.webSocketManager lz_connect]; ``` ### 发送消息 ```objective-c // 通过单例发送 [[LZWebSocketManager lz_sendMessage:@"这是一条消息"]; // 通过实例发送 [self.webSocketManager lz_sendMessage:@"这是一条消息"]; ``` ### 代理方法 ```objective-c #pragma mark - WebSocketManagerDelegate // 连接成功 - (void)lz_webSocketDidConnect:(WebSocketManager *)socket { NSLog(@"连接成功"); } // 连接断开 - (void)lz_webSocketDidDisconnect:(WebSocketManager *)socket { NSLog(@"连接已断开"); } // 连接失败 - (void)lz_webSocketConnectError:(WebSocketManager *)socket { NSLog(@"连接失败"); } // 接收消息 - (void)lz_webSocket:(WebSocketManager *)socket didReceiveMessage:(id)data { NSLog(@"收到消息:%@", data); } // 消息发送失败 - (void)lz_webSocket:(WebSocketManager *)socket sendMessageError:(LZWebSocketStatus)socketStatus { switch (socketStatus) { case LZWebSocketStatusNotConnected: // 未连接状态 break; case LZWebSocketStatusFailed: // 连接失败 break; case LZWebSocketStatusClosedByServer: // 服务器关闭 break; case LZWebSocketStatusClosedByUser: // 用户关闭 break; default: break; } } ``` ### 状态枚举 ```objective-c typedef NS_ENUM(NSInteger, LZWebSocketStatus) { LZWebSocketStatusNotConnected, // 未连接 LZWebSocketStatusConnected, // 已连接 LZWebSocketStatusFailed, // 连接失败 LZWebSocketStatusClosedByServer, // 服务器关闭 LZWebSocketStatusClosedByUser, // 用户关闭 LZWebSocketStatusReceived // 接收消息 }; typedef NS_ENUM(NSInteger, LZWebSocketReceiveType) { LZWebSocketReceiveTypeMessage, // 普通消息 LZWebSocketReceiveTypePong // 心跳响应 }; ``` ## 重连机制 支持手动触发重连: ```objective-c // 单例重连 [[LZWebSocketManager lz_reconnect]; // 实例重连 [self.webSocketManager lz_reconnect]; ``` ## 示例项目 `SocketRocketDemo` 目录下包含完整的示例项目,演示了各种使用场景和代理回调的处理方式。 ## 许可证 本项目基于 MIT 许可证开源。