SocketRocket和AFNetworking cookie同步

时间:2016-01-18 08:06:23

标签: ios afnetworking socketrocket

我们正在使用SocketRocket来实现聊天功能。但问题是当初始化SocketRocket时,它由服务器端登录过滤器过滤,因此它不能做三次握手成功的http。当我们删除服务器端登录过滤器时,SocketRocket可以成功与服务器端通信,但服务器端无法知道谁是用户。

因此,我想是SocketRocket不与AFNetworking同步Cookie的原因,因为我们的登录信息正在使用AFNetworking库。那么是否有人知道如何在他们之间同步cookie或如果您认为这是其他原因,请告诉我。提前谢谢。

以下是我们使用SocketRocket连接到服务器的方法:

-(void)connectWebSocket{
    _webSocket.delegate = nil;
    _webSocket = nil;
    NSString *urlString = ChatUrl;
    SRWebSocket *newWebSocket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:urlString]];
    newWebSocket.delegate = self;
    [newWebSocket open];
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。您需要在websocket上添加cookie作为请求cookie。如果您的websocket URL与您的登录URL不同(例如wss://www.example.com vs https://www.example.com),则您需要从基本URL复制Cookie。对于上面的例子:

-(void)connectWebSocket{
    _webSocket.delegate = nil;
    _webSocket = nil;
    NSString *urlString = ChatUrl;
    SRWebSocket *newWebSocket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:urlString]];

    // Set the cookies. Need to use the base URL that your login credentials are on.
    NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:BaseUrl];
    newWebSocket.requestCookies = cookies;

    newWebSocket.delegate = self;
    [newWebSocket open];
}