iOS websocket 及时通讯实现

     2015-09-03 by 木易哥哥 

智者精选,每天获取励志认知能量 www.5izhjx.com

   开发一个类似QQ、微信的即时IM聊天功能,做到实时监控消息,需要用的技术是websocket,WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

      下面是IOS端我实现websocket通讯,列出步骤思路,以作学习。

1.加入frameworks的 libicucore.dylib

2.导入对象SRWebSocket

3.在聊天的viewController.h引用 #import "SRWebSocket.h"头文件   SRWebSocketDelegate代理,声明SRWebSocket *_webSocket;

4.在聊天的viewController.m使用

- (void)connectSocket

{

    if (_webSocket ==nil) {

        _webSocket = [[SRWebSocketalloc]initWithURLRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:Web_Socket]]];

        _webSocket.delegate =self;

        [_webSocket open];

    }

}

#pragma mark - SRWebSocketDelegate 写上具体聊天逻辑

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

{

   // NSLog(@"Websocket Connected");


    NSMutableDictionary *dictionary = [[NSMutableDictionaryalloc] init];

    [dictionarysetValue:@"subscribe"forKey:@"cmd"];

    [dictionarysetValue:@(VER) forKey:@"ver"];

    [dictionarysetValue:[settingInfogetSessionId] forKey:@"sid"];

    [dictionarysetValue:@"1"forKey:@"channel"];

    [dictionarysetValue:[[settingInfogetUserAccountInfo]objectForKey:@"user_id"]forKey:@"client_id"];

    //NSLog(@"dictionary:%@",[dictionary JSONString]);

    

    [_webSocketsend:[dictionary JSONString]];

}

......

- (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


最后调试,成功,附上一张效果!








  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 31
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值