面试题答案
一键面试1. 引入相关库
以SocketRocket为例,可通过CocoaPods在项目中引入。在Podfile
文件中添加pod 'SocketRocket'
,然后执行pod install
。
2. 初始化WebSocket连接
- 导入头文件:在需要使用WebSocket的文件中导入
SRWebSocket.h
。 - 创建并初始化WebSocket对象:
NSURL *url = [NSURL URLWithString:@"ws://yourwebsocketurl"];
SRWebSocket *webSocket = [[SRWebSocket alloc] initWithURL:url];
webSocket.delegate = self;
3. 处理连接状态变化
实现SRWebSocketDelegate
协议中的相关方法:
- 连接成功:
- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"WebSocket连接成功");
}
- 连接失败:
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@"WebSocket连接失败: %@", error);
}
- 连接关闭:
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
NSLog(@"WebSocket已关闭,代码: %ld,原因: %@,是否正常关闭: %d", (long)code, reason, wasClean);
}
4. 发送数据
调用send
方法发送数据:
NSString *message = @"Hello, WebSocket!";
[webSocket send:message];
也可以发送二进制数据等其他类型数据,如:
NSData *data = [@"Some binary data" dataUsingEncoding:NSUTF8StringEncoding];
[webSocket send:data];
5. 接收数据
实现SRWebSocketDelegate
协议中的webSocket:didReceiveMessage:
方法:
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
if ([message isKindOfClass:[NSString class]]) {
NSString *textMessage = (NSString *)message;
NSLog(@"接收到文本消息: %@", textMessage);
} else if ([message isKindOfClass:[NSData class]]) {
NSData *dataMessage = (NSData *)message;
NSLog(@"接收到二进制数据,长度: %lu", (unsigned long)dataMessage.length);
}
}