轉自 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下載下傳位址