2016-01-18 2 views
1

Мы используем SocketRocket, реализуя функцию чата. Но проблема заключается в том, когда init SocketRocket, он отфильтровывается с помощью фильтра входа в систему на стороне сервера, поэтому он не может выполнить трехкратный успех рукопожатия. Когда мы удаляем фильтр входа на сервер, SocketRocket может успешно разговаривать на стороне сервера, но серверная сторона не может знать, кто является пользователем.SocketRocket и AFNetworking cookie sync

Так что я думаю, является ли это причиной того, что 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]; 
} 

ответ

0

Я просто была такая же проблема. Вам необходимо добавить свои файлы cookie в виде файлов cookie запросов на веб-сайте. Если URL-адрес вашего веб-сайта отличается от вашего URL-адреса входа (например, wss://www.example.com vs 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]; 
} 
+0

Да, вы правы, я использовал тот же способ, чтобы решить проблему, мы должны синхронизировать файл cookie вручную. – astarring

Смежные вопросы