Перейти к содержанию

Передача дополнительных HTTP заголовков при установке Websocket соединения

В сборке 2.6.8  добавлена возможность передачи дополнительных HTTP заголовков при установке Websocket соединения с сервером. Для этого используется функция

FPWCSApi2Session connectWithHeaders:(NSDictionary<NSString *, NSString *> *) headers

Допустим, что на сервере настроено проксирование Websocket трафика с авторизацией при помощи nginx. При этом параметры авторизации должны передаваться в Websocket URL

wss://login:password@test.flashphoner.com/wss

В этом случае, заголовок Authorization для передачи имени и пароля пользователя может быть сформирован из параметров Websocket URL и отправлен при установке соединения следующим образом:

code

NSURL* nsURL = [NSURL URLWithString:_urlInput.text];
if (nsURL.user && nsURL.password) {
    NSString* auth = [NSString stringWithFormat:@"%@:%@", nsURL.user, nsURL.password];
    NSData *authData = [auth dataUsingEncoding:NSUTF8StringEncoding];
    NSString *authBase64 = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:kNilOptions]];
    NSDictionary *headers = [[NSDictionary alloc] initWithObjectsAndKeys: authBase64, @"Authorization", nil];
    [_session connectWithHeaders: headers];
} else {
    [_session connect];
}