首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SocketRocket和AFNetworking cookie同步

SocketRocket和AFNetworking cookie同步
EN

Stack Overflow用户
提问于 2016-01-18 16:06:23
回答 1查看 476关注 0票数 1

我们正在使用SocketRocket实现一个聊天功能。但问题是,当初始化SocketRocket时,它被服务器端的登录过滤器过滤了,所以它不能成功地进行三次http握手。当我们删除服务器端登录过滤器时,SocketRocket可以成功地与服务器端通信,但是服务器端不能知道谁是用户。

所以我在想,这是否是SocketRocket不同步cookie和AFNetworking的原因,因为我们的登录使用的是AFNetworking库。那么有没有人知道如何在他们之间同步cookie,或者如果你认为这是其他原因,请让我知道。提前谢谢。

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

代码语言:javascript
复制
-(void)connectWebSocket{
    _webSocket.delegate = nil;
    _webSocket = nil;
    NSString *urlString = ChatUrl;
    SRWebSocket *newWebSocket = [[SRWebSocket alloc] initWithURL:[NSURL URLWithString:urlString]];
    newWebSocket.delegate = self;
    [newWebSocket open];
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-02 00:31:19

我也有同样的问题。您需要在websocket上添加cookies作为请求cookies。如果您的websocket URL与您的登录URL不同(例如,wss://www.example.com vs https://www.example.com),您将需要从基URL复制cookie。对于上面的示例:

代码语言:javascript
复制
-(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];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34849824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档