iOS Client 与WebSocket 通信(二)

上一篇我们了解下有关网络通信的一些基础知识,这篇我们就具体实践下。

     实践之前我们先搭建一下本次demo的环境。

   1.首先去node js 官网安装node js环境

    安装完成如下:

  安装完成 打开终端 输入 : node  -v 

   log输出:v0.10.13.  

   这就证明你的node环境好了。

 

    2..在socket io 官网下载下载socket io的例子,直接copy保存为js文件就好,取名为app.js。

    3. 把你新建的app.js copy到 刚才node js 安装的目录下

    /usr/local/lib目录下,注意这个目录是系统隐藏的目录

   4.打开终端cd 到这个目录下 输入:node  app.js

   看看会不会报错。正常情况下是

输出:  info  -  socket. io  started

如果报错那就可能还缺少2个插件,express 和 ejs  

分别输入 :sudo npm install express

                         sudo npm install ejs

 

然后再次运行node  app.js

就看见输出:  info  -  socket. io  started

  下面这边websocket的环境已经ok了。

 然后就看ios这边的了。 在github 下载我的demo app 然后直接运行就好了,可以看见下面的效果了。

具体代码重点是初始化一个socketio的对象,然后实现他的delegate:

[html]  view plain copy
  1. socketIO = [[SocketIO alloc] initWithDelegate:self];  
  2. //socketIO.useSecure = YES;  
  3. [socketIO connectToHost:@"localhost" onPort:8127];    
 然后在发送就条用这个方法:

[html]  view plain copy
  1. -(void)sendMessageToWebSocket:(NSString *)str  
  2. {  
  3.     SocketIOCallback cb = ^(id argsData) {  
  4.         NSDictionary *response = argsData;  
  5.         // do something with response  
  6.         NSLog(@"ack arrived: %@", response);  
  7.     };  
  8.     [socketIO sendMessage:str withAcknowledge:cb];  
  9. }  


客户端接受到消息

[html]  view plain copy
  1. - (void) socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet  
  2. {  
  3.     NSLog(@"didReceiveEvent()");  
  4.     NSString *receiveData=packet.data;  
  5.     NSData *utf8Data = [receiveData dataUsingEncoding:NSUTF8StringEncoding];  
  6.     NSDictionary *dictemp=(NSDictionary *)[SocketIOJSONSerialization objectFromJSONData:utf8Data error:nil];  
  7.     NSDictionary *aadic=(NSDictionary *)[[dictemp objectForKey:@"args"] objectAtIndex:0];  
  8.     NSString * temp = [aadic objectForKey:@"text"];  
  9.       
  10.     NSLog(@"temp==%@",temp);  
  11.     if (![temp isEqualToString:@"connectok"]) {  
  12.         [self.messages addObject:temp];  
  13.           
  14.         if((self.messages.count - 1) % 2)  
  15.             [MessageSoundEffect playMessageSentSound];  
  16.         else  
  17.             [MessageSoundEffect playMessageReceivedSound];  
  18.           
  19.         [self finishSend];  
  20.     }  
  21.       
  22. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值