iOS中的Sailsjs SocketIO

iOS中的Sailsjs SocketIO,ios,objective-c,node.js,socket.io,sails.js,Ios,Objective C,Node.js,Socket.io,Sails.js,我很难将注意力集中在一个基于socket的聊天应用上,我正在尝试这样做。我正在为我的服务器端框架使用sailsjs,并尝试使用在iOS中创建一个基于聊天的应用程序 我成功地与sailsjs框架握手,sailsjs config/sockets.js文件中的onConnect方法运行。但是,在它打开之后,我如何才能路由到我创建的控制器和操作,并且仍然能够访问请求套接字并将它们订阅到我的模型中假设您使用最新版本的sails(0.10.0及更高版本),sails在socket.io上使用的协议不是公开

我很难将注意力集中在一个基于socket的聊天应用上,我正在尝试这样做。我正在为我的服务器端框架使用sailsjs,并尝试使用在iOS中创建一个基于聊天的应用程序


我成功地与sailsjs框架握手,sailsjs config/sockets.js文件中的onConnect方法运行。但是,在它打开之后,我如何才能路由到我创建的控制器和操作,并且仍然能够访问请求套接字并将它们订阅到我的模型中

假设您使用最新版本的sails(0.10.0及更高版本),sails在socket.io上使用的协议不是公开的,但是您可以在上读取源代码

基本上,它将发出一个事件,以http动词作为事件名称,并发送一个对象方法、数据、URL和头。Javascript中的类似内容:

var request = {
  data: data,
  url: url,
  headers: headers
};
socket.emit(method, request, callback);
  • 方法
    必须类似于
    'head'
    'get'
    'post'
  • 数据
    应该是发送请求正文的对象。可选
  • url
    必须是一个没有结尾斜杠或空格的字符串,如
    '/buy-a-cat'
    '/cat/1/pat'
  • 标题
    应该是一个对象,标题名称和值的映射。标题名称小写。比如
    {accept:'*/*'}
    。可选
我对objective-C了解不多,也没有测试过这段代码,但您可以这样做,我认为:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"/cats" forKey:@"url"];

SocketIOCallback cb = ^(id argsData) {
    NSDictionary *response = argsData;
    // do something with response
};

[socketIO sendEvent:@"get" withData:dict andAcknowledge:cb];
在http请求表示法中,它将等于:
GET/cats

请注意,如果您使用的是sails 0.9.x或更低版本,则协议略有不同。还要注意的是,由于sails还不稳定(不是1.x.x),这可能会再次发生变化,因为这在任何地方都没有记录

我还找到了一个新的方法。它看起来使用0.9.x协议,但应该与1.x.x兼容

看起来你可以在里面做到这一点:

#import "SocketIO+SailsIO.h"


_socket = [[SocketIO alloc] initWithDelegate:self];
    [_socket connectToHost:@"localhost" onPort:1337];    

[_socket get:@"/user" withData:nil callback:^(id response) {
        NSLog(@"Records: %@", response);
}];

你使用的是什么版本的sails?所以我昨晚试过了,我明白你说的关于sails解释它的意思,但是用你的例子调用什么都没做:-(你使用的是哪个版本的sails?最新的…事实上0.10.0-rc7I已经用to be with acknowledge(回调函数)更新了代码).再查一遍.日志里有什么吗?我很快就要试试了