天天看點

iOS Client 與WebSocket 通信 入門demo 即時通訊 socketio

轉自 http://www.xuebuyuan.com/1681902.html

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:

    socketIO = [[SocketIO alloc] initWithDelegate:self];

    //socketIO.useSecure = YES;

    [socketIO connectToHost:@"localhost" onPort:8127];  

 然後在發送就條用這個方法:

-(void)sendMessageToWebSocket:(NSString *)str

{

    SocketIOCallback cb = ^(id argsData) {

        NSDictionary *response = argsData;

        // do something with response

        NSLog(@"ack arrived: %@", response);

    };

    [socketIO sendMessage:str withAcknowledge:cb];

}

用戶端接受到消息

- (void) socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet

{

    NSLog(@"didReceiveEvent()");

    NSString *receiveData=packet.data;

    NSData *utf8Data = [receiveData dataUsingEncoding:NSUTF8StringEncoding];

    NSDictionary *dictemp=(NSDictionary *)[SocketIOJSONSerialization objectFromJSONData:utf8Data error:nil];

    NSDictionary *aadic=(NSDictionary *)[[dictemp objectForKey:@"args"] objectAtIndex:0];

    NSString * temp = [aadic objectForKey:@"text"];

    NSLog(@"temp==%@",temp);

    if (![temp isEqualToString:@"connectok"]) {

        [self.messages addObject:temp];

        if((self.messages.count - 1) % 2)

            [MessageSoundEffect playMessageSentSound];

        else

            [MessageSoundEffect playMessageReceivedSound];

        [self finishSend];

    }

}

Demo下載下傳位址