Xcode:如何将协议添加到套接字连接并发送JSON数据

时间:2016-03-30 22:03:15

标签: objective-c json sockets

我是Xcode的新手,我正在关注this github示例。我的任务是连接到信令服务器。如果设置了协议,则信令服务器仅接受连接。

  1. 有没有办法可以为连接添加协议。 例如:
  2. // create the NSURLRequest that will be sent as the handshake
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"wss://example.com"]];
    
        // create the socket and assign delegate
        self.socket = [PSWebSocket clientSocketWithRequest:request];
        self.socket.delegate = self;
    //Something I need to add
    
    self.socket.addprotocol="Protocol";

    2 - ;另外我需要将JSON数据发送到下面的服务器是我需要在Objective C中编写的Android代码

    JSONObject message = new JSONObject();
                    message.put("pc", 0);
                    message.put("message", "Bye");
                    socket.sendText(message.toString());
                  
                } catch (JSONException e) {
                  }

1 个答案:

答案 0 :(得分:1)

对于问题#1,遗憾的是,您使用的PocketSocket库看起来并不支持子协议。但是,所有这些都不会丢失,因为有一个想要添加该功能的人pull request。您可以合并这些更改,或者只调整在请求中设置相应传出标头的单行代码:

[request setValue:[_protocols componentsJoinedByString:@","] forHTTPHeaderField:@"Sec-WebSocket-Protocol"];

对于问题#2,有NSJSONSerialization,它允许您轻松地将Objective-C NSDictionaries和NSArrays转换为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);
    }