добавить заголовок в URLSessionWebSocket
Я работаю сURLSessionWebSocket
чтобы узнать об этом больше. Я использую для этого этот класс
у меня вопрос, как я могу добавить к нему заголовок аутентификации? (Content-Type
, ACCOUNT-AUTHORIZATION
а также SUB-AUTHORIZATION
)
большое спасибо
lass WebSocketConnector : NSObject {
var didOpenConnection : (()->())?
var didCloseConnection : (()->())?
var didReceiveMessage : ((_ message : String)->())?
var didReceiveData : ((_ message : Data)->())?
var didReceiveError : ((_ error : Error)->())?
var urlSession : URLSession!
var operationQueue : OperationQueue = OperationQueue()
var socket : URLSessionWebSocketTask!
init(withSocketURL url : URL){
super.init()
urlSession = URLSession(configuration: .default, delegate: self, delegateQueue: operationQueue)
socket = urlSession.webSocketTask(with: url)
}
private func addListener(){
socket.receive {[weak self] (result) in
switch result {
case .success(let response):
switch response {
case .data(let data):
self?.didReceiveData?(data)
case .string(let message):
self?.didReceiveMessage?(message)
@unknown default:
break
}
case .failure(let error):
self?.didReceiveError?(error)
}
self?.addListener()
}
}
}
extension WebSocketConnector : WebSocketProtocol {
func establishConnection(){
socket.resume()
addListener()
}
func disconnect(){
socket.cancel(with: .goingAway, reason: nil)
}
func send(message: String) {
socket.send(URLSessionWebSocketTask.Message.string(message)) {[weak self] (error) in
if let error = error {
self?.didReceiveError?(error)
}
}
}
func send(data: Data) {
socket.send(URLSessionWebSocketTask.Message.data(data)) {[weak self] (error) in
if let error = error {
self?.didReceiveError?(error)
}
}
}
}
extension WebSocketConnector : URLSessionWebSocketDelegate {
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) {
didOpenConnection?()
}
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didCloseWith closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) {
didCloseConnection?()
}
}
1 ответ
Просто оберните свой URL-адрес URLRequester:
var request = URLRequest(url: url)
request.addValue("xafq", forHTTPHeaderField: "Authorization")
и звоните:
URLSession.shared.webSocketTask(with: request)