繁体   English   中英

SocketRocket和AFNetworking Cookie同步

[英]SocketRocket and AFNetworking cookie sync

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

所以我在想这是否是SocketRocket不将Cookie与AFNetworking同步的原因,因为我们的登录名是使用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];
}

我只是有同样的问题。 您需要将cookie作为请求cookie添加到websocket。 如果您的websocket URL与登录URL不同(例如wss://www.example.comhttps://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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM