2016-05-13 210 views
1

我正在为我的iOS聊天应用程序使用Socket.IO。名为socket.io-client-swift的聊天库位于Swift中,我可以使用桥接手动将其手动集成到我的Objective-C项目中。Objective-C客户端的Socket.IO-Swift库

我进口的“源”文件夹从上面库到我的Xcode和我ChatViewController放在#进口“MyProjectName-Swift.h”与下面的代码:

//in viewDidLoad 
NSURL* url = [[NSURL alloc] initWithString:@"http://localhost:3000/"]; 
SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:url options:@{@"log": @YES, @"forcePolling": @YES}]; 

[socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) { 
NSLog(@"socket connected"); 
}]; 

[socket on:@"currentAmount" callback:^(NSArray* data, SocketAckEmitter* ack) { 
double cur = [[data objectAtIndex:0] floatValue]; 

[socket emitWithAck:@"canUpdate" withItems:@[@(cur)]](0, ^(NSArray* data) { 
    [socket emit:@"update" withItems:@[@{@"amount": @(cur + 2.50)}]]; 
}); 

[ack with:@[@"Got your currentAmount, ", @"dude"]]; 
}]; 

[socket connect]; 

我使用本地的node.js(http://localhost:3000/ )由this tutorial的帮助下,从发送消息,我可以在我的Xcode控制台同时看到:

2016-05-13 14:59:20.345 CoreData_Chat[45303:372543] LOG SocketEnginePolling: Doing polling request 
2016-05-13 14:59:24.033 CoreData_Chat[45303:373287] LOG SocketEnginePolling: Got polling response 
2016-05-13 14:59:24.033 CoreData_Chat[45303:373287] LOG SocketEnginePolling: Doing polling request 
2016-05-13 14:59:24.033 CoreData_Chat[45303:373285] LOG SocketEngine: Got message: 42["chat message","hii"] 
2016-05-13 14:59:24.034 CoreData_Chat[45303:373285] LOG SocketIOClient: Should parse message: 2["chat message","hii"] 
2016-05-13 14:59:24.034 CoreData_Chat[45303:373285] LOG SocketParser: Parsing 2["chat message","hii"] 
2016-05-13 14:59:24.035 CoreData_Chat[45303:373285] LOG SocketParser: Decoded packet as: SocketPacket {type: 2; data: [chat message, hii]; id: -1; placeholders: -1; nsp: /} 
2016-05-13 14:59:24.035 CoreData_Chat[45303:373285] LOG SocketIOClient: Handling event: chat message with data: (
hii) 

所以,我怎么能发出这条消息在我的应用程序,以显示和/或发送消息给服务器。没有任何明确的教程解释这一点,特别是在Objective-C中。谁能帮忙?谢谢。

回答

2
NSMutableDictionary *messageServer = [[NSMutableDictionary alloc]init]; 
[messageServer setObject:@"bet" forKey:userActivity]; 
[messageServer setObject:@"0" forKey:betMoney]; 
SocketIOClient emit:EVENTNAME withItems:@[messageServer]; 
+1

利用可用的格式选项确保您的答案尽可能可读/可区分。有一个代码高亮选项可以确保您包含的代码片段格式正确 – JordanMazurke