原文网址:http://blog.csdn.net/manyxh/article/details/48196209

2015-09-03 by 木易哥哥 

开发一个类似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 = [[NSMutableDictionary alloc] init];

[dictionary setValue:@"subscribe" forKey:@"cmd"];

[dictionary setValue:@(VER)  forKey:@"ver"];

[dictionary setValue:[settingInfo getSessionId] forKey:@"sid"];

[dictionary setValue:@"1" forKey:@"channel"];

[dictionary setValue:[[settingInfo getUserAccountInfo]objectForKey:@"user_id"] forKey:@"client_id"];

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

[_webSocket send:[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

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

【转】iOS websocket 及时通讯实现的更多相关文章

  1. Uniapp使用GoEasy实现websocket实时通讯

    Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便. GoEasy上架DCloud Uniapp插件市场已经有一 ...

  2. java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  3. java SSM 框架 代码生成器 websocket即时通讯 shiro redis

    1.   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限      角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限.      按钮权限: 给角色分配按钮权限. ...

  4. Springboot 项目源码 Activiti6 工作流 vue.js html 跨域 前后分离 websocket即时通讯

    特别注意: Springboot 工作流  前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ activiti6.0.0+ mybaits+maven+接 ...

  5. JavaScript进行WebSocket字节流通讯示例

    websocket进行通讯时,可以选择采用字符串或者字节流的传输模式.但在发送与接收时,需要考虑数据的分包,即分成一个个请求与响应消息.无论是采用哪种传输模式,都不免要遇到这个问题. 采用字符串传输时 ...

  6. java SSM框架 代码生成器 快速开发平台 websocket即时通讯 shiro redis

    A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 , ...

  7. 使用tomcat方式实现websocket即时通讯服务端讲解

    使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...

  8. 微信小程序使用GoEasy实现websocket实时通讯

    不需要下载安装,便可以在微信好友.微信群之间快速的转发,用户只需要扫码或者在微信里点击,就可以立即运行,有着近似APP的用户体验,使得微信小程序成为全民热爱的好东西~ 同时因为微信小程序使用的是Jav ...

  9. iOS实现XMPP通讯(二)XMPP编程

    项目概述 这是一个可以登录jabber账号,获取好友列表,并且能与好友进行聊天的项目. 使用的是第三方库XMPPFramework框架来实现XMPP通讯. 项目地址:XMPP-Project 项目准备 ...

随机推荐

  1. 监听cell 滑动到 摸个分区

    //滑动过程中 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { //    NSLog(@"000---%ld", ...

  2. JS 基于面向对象的 轮播图2

    <script> // 函数不能重名, --> 子函数 // is defined function --> 函数名是否写错了 function AutoTab(id) { T ...

  3. 详解模块定义(.def)文件

    一个完整的Windows应用程序(C++程序)通常由五种类型的文件组成:源程序文件,头文件,资源描述文件,项目文件,模块定义文件.本文主要讲解模块定义文件. 模块定义 (.def)文件为链接器提供有关 ...

  4. Android布局文件layout.xml的一些属性值

        第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 andr ...

  5. Mifare Classic Tool(MCT)汉化版

    2.0.4 到 2.0.6的更改: 注意:本汉化版本可能不稳定,与此发生的一切后果与作者和汉化者无关. Version : * Bugfix: Fixed crash which occurred i ...

  6. Git ~ 大杀器之一 远程仓库 ~ Git

    一般情况ixashi找一台电脑作为服务器的角色 , 每天24小时开机 , 其他扥每个人都从这个 “服务器” 仓库里面克隆一份到自己的电脑上面 并且将各自的提交推送到服务器仓库中 , 也可以从服务器仓库 ...

  7. linux常用命令:5网络命令

    网络命令 1. 指令名称:write 指令所在路径:/usr/bin/write 执行权限:所有用户 语法:write  <用户名> 功能描述:给用户发送信息,以Ctrl+D保存结束

  8. Monogb基本概念及基本操作

    MongoDB是面向文档的数据库. 索引:MongoDB支持通用辅助索引,能进行多种快速查询,也提供唯一的.复合的和地理空间索引能力. 存储JavaScript:开发人员不必使用存储过程了,可以直接在 ...

  9. 学习进度条<第一周>

    所花时间(包括上课):8小时(上课4,编程0.5,写博客1,读书2.5) 代码量:90行 博客量:4篇 了解到的知识点:什么是BUG                 哪怕有几万分之一的概率也要考虑安全 ...

  10. 机器学习技法-AdaBoost元算法

    课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hy ...