Синхронизация файлов cookie SocketRocket и AFNetworking

Мы используем 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];
}

person astarring    schedule 18.01.2016    source источник


Ответы (1)


У меня была такая же проблема. Вам нужно добавить свои файлы cookie в качестве файлов cookie запроса на веб-сокет. Если ваш URL-адрес веб-сокета отличается от URL-адреса для входа (например, wss://www.example.com вместо https://www.example.com), вам необходимо скопировать файлы cookie из базового URL-адреса. Для вашего примера выше:

-(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];
}
person mofojed    schedule 01.03.2016
comment
Да, вы правы, я использовал тот же способ решения, мы должны синхронизировать куки вручную. - person astarring; 09.04.2016