SailsJS:如何使用socket.io-client-swift从iOS客户端App调用事件

时间:2017-07-12 11:25:34

标签: ios socket.io sails.js

我在FaceController文件中有测试操作,寻找事件乐趣

test: function(req,socket){
  console.log("SERVER LOG: Entered Socket Test");
  socket.on('fun', function(data){
  console.log("FUN FUN FUN");
  socket.emit('world', {name:"Anuj",message:"U Got it!!!"});
});

这是我的routes.js

中的代码
 'get /faces/socket': 'FaceController.test',

我在我的Obj-c项目中使用Socket-io-client-swift。我能够连接到服务器但无法发出事件。下面是我用来发出事件的代码:

NSURL* url = [[NSURL alloc] initWithString:@"http://localhost:1337"];

self.socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @YES, @"forcePolling": @YES,@"connectParams":@{@"__sails_io_sdk_version": @"0.11.0"}}];

[self.socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {

    NSLog(@"socket connected");

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    [dict setObject:@"/faces/socket" forKey:@"url"];

    NSDictionary *eventDict = @{@"fun": @""};

    [dict setObject:eventDict forKey:@"data"];

    [self.socket emit:@"get" with:@[dict]];    
}];

有人可以提供将事件发送到服务器的正确方法。感谢!!!

1 个答案:

答案 0 :(得分:1)

我最近面临同样的问题,即向我的Sails服务器发送虚拟帖子和获取请求。最后我从here得到了解决方案。

以下是我的帖子示例,并从客户端iOS Swift获取。

与服务器的连接

socket = SocketIOClient(socketURL: URL(string: "http://localhost:1337")!, config: [.log(false), .compress, .forceWebsockets(true), .connectParams(["__sails_io_sdk_version":"0.12.13"])])

发布请求示例:

socket.emitWithAck("post",["data": ["userid":"1","name": "Hello World2"], "url": "/faces/socket"]).timingOut(after: 0) {data in
    print("socket id with ack------------>", (socket.engine?.sid)!)
}

获取请求:

socket.emitWithAck("get",["url": "/userchat"]).timingOut(after: 0) {data in
    print("get with ack------------>", (socket.engine?.sid)!)
}

希望这会对你有所帮助。

由于