Objective c Xcode:如何向套接字连接添加协议并发送JSON数据

Objective c Xcode:如何向套接字连接添加协议并发送JSON数据,objective-c,json,sockets,Objective C,Json,Sockets,我是Xcode新手,我正在学习github的例子。我的任务是连接到信号服务器。信令服务器仅在设置了协议时才接受连接 是否有一种方法可以将协议添加到连接中。 例如: //创建将作为握手发送的NSURLRequest NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:@]wss://example.com"]]; //创建套接字并分配委托 self.socket=[pswebsocketclientsock

我是Xcode新手,我正在学习github的例子。我的任务是连接到信号服务器。信令服务器仅在设置了协议时才接受连接

  • 是否有一种方法可以将协议添加到连接中。 例如:
  • //创建将作为握手发送的NSURLRequest
    NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:@]wss://example.com"]];
    //创建套接字并分配委托
    self.socket=[pswebsocketclientsocketwithrequest:request];
    self.socket.delegate=self;
    //我需要补充一点
    self.socket.addprotocol=“协议”对于问题1,很遗憾,您正在使用的PocketSocket库似乎不支持子协议。然而,并不是所有的东西都丢失了,因为有人想要添加这个功能。您可以合并这些更改,也可以只修改在请求中设置适当传出标头的单行代码:

    [request setValue:[_protocols componentsJoinedByString:@","] forHTTPHeaderField:@"Sec-WebSocket-Protocol"];
    
    对于问题#2,有一个,它允许您轻松地将Objective-C NSDictionary和NSArray转换为JSON对象:

        NSDictionary *o = @{
                            @"a": @"Ayyyy",
                            @"b": @"Beee"
                            };
        NSError *error;
        NSData *d = [NSJSONSerialization dataWithJSONObject:o options:NSJSONWritingPrettyPrinted error:&error];
        if (error) {
            NSLog(@"Error JSON-encoding object: %@", error);
        } else {
            NSString *s = [NSString stringWithUTF8String:[d bytes]];
            NSLog(@"JSON:\n%@", s);
        }
    

    我不太清楚你在这里说的“添加协议”是什么意思。WebSocket是一种协议。你得到了什么样的行为,它与你期望的有什么不同?要轻松格式化JSON消息,请查看以下内容:var mySocket=new WebSocket(“,“我的自定义协议”);你可以说是子协议。我的服务器不接受我的自定义协议以外的任何内容。如何使用套接字连接发送JSON文本?嗨,马克,我收到了这个错误。2016-03-30 16:20:49.856 TestPocketSocket[1889:86291]***在-[PSWebSocketDriver writeMessageWithOpCode:data:],/PocketSocket/PSWebSocketDriver.m:325 2016-03-30 16:20:49.862 TestPocketSocket[1889:86291]中的断言失败***由于未捕获的异常“NSInternalinconsistenceException”终止应用程序,原因:***第一次抛出调用堆栈:我遵循了他们的示例应用程序[request setValue:[@“My protocol”]forHTTPHeaderField:@“Sec WebSocket protocol”];:获取错误预期标识符?我可能有机会稍后再查看,看看是否可以让它工作。你看过其他WebSocket库吗?也许有一种子协议可以在不需要任何更改的情况下工作?我已经试过了:Socket/Rocket(从未工作过)、红蜘蛛(工作过但不是objective C)。你能给我推荐一些东西吗?一些有麻省理工许可证的东西。