模拟webQQ实现简单的聊天,基于WebSocket

本文详细介绍如何在iOS开发中使用WebSocket,包括导入必要的包、配置环境、实现代理方法等步骤,并对比了WebSocket与HTTP、Ajax轮询的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何使用WebSocket

首先要导入webSocket的包,git下载地址https://github.com/square/SocketRocket
导入

这个包,然后配置环境,导入需要用的框架
libicucore.dylib//这个现在Xcode里没有,需要自己找到资源后手动添加
CFNetwork.framework
Security.framework
Foundation.framework。
要记得添加pch文件。
然后编译,工程运行没有错误,进行下一步
在用到的ViewController里包含一下头文件
1.

3.一个测试用的接口ws://echo.websocket.org

4.必须实现的代理方法

  • (void)webSocketDidOpen:(SRWebSocket *)webSocket;

  • (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;

  • (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;

  • (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;

  • (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload;
    5,在第一个代理方法里发送请求
    [_webSocket send:@“test success”];

在第三个代理方法里打印数据
在第四个代理方法里置为nil
_webSocket.delegate = nil;

1:什么是WebSocket

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信–允许服务器主动发送信息给客户端。

1优点
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。 
其优点就是,只要建立一次连接,就可以连续不断的得到服务器推送的消息,节省带宽和服务器端的压力

2 ajax轮询:

先说说是怎么实现ajax轮询的,下面先打个比方:
在这里插入图片描述
ajax轮询示例代码
$(function() {
to_page();
setInterval(“isHave();”,3000);
});
function isHave(){
$.ajax({
url : “localhost/isHave”,
data : {},
datatype: “json”,
type : “post”,
success : function(result) { console.log(result);
},
}
});
}

其缺点显而易见,每次都要建立HTTP连接,即使需要传输的数据非常少,所以这样很浪费带宽;同时,这个过程是被动性的,即不是服务器主动推送的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值