From 831ff08082bedb9f8d844b11a70d519e949d251a Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Fri, 23 Jun 2023 07:33:10 +0200 Subject: [PATCH] Streaming: Send message as UTF8 + token in subprotocols fix #1438 --- Packages/Env/Sources/Env/StreamWatcher.swift | 6 ++++-- Packages/Network/Sources/Network/Client.swift | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Packages/Env/Sources/Env/StreamWatcher.swift b/Packages/Env/Sources/Env/StreamWatcher.swift index 402b52fe..c5fedefb 100644 --- a/Packages/Env/Sources/Env/StreamWatcher.swift +++ b/Packages/Env/Sources/Env/StreamWatcher.swift @@ -62,8 +62,10 @@ public class StreamWatcher: ObservableObject { } private func sendMessage(message: StreamMessage) { - task?.send(.data(try! encoder.encode(message)), - completionHandler: { _ in }) + if let encodedMessage = try? encoder.encode(message), + let stringMessage = String(data: encodedMessage, encoding: .utf8) { + task?.send(.string(stringMessage), completionHandler: { _ in }) + } } private func receiveMessage() { diff --git a/Packages/Network/Sources/Network/Client.swift b/Packages/Network/Sources/Network/Client.swift index 567eca0c..cc3a3dc8 100644 --- a/Packages/Network/Sources/Network/Client.swift +++ b/Packages/Network/Sources/Network/Client.swift @@ -218,8 +218,11 @@ public final class Client: ObservableObject, Equatable, Identifiable, Hashable { public func makeWebSocketTask(endpoint: Endpoint, instanceStreamingURL: URL?) -> URLSessionWebSocketTask { let url = makeURL(scheme: "wss", endpoint: endpoint, forceServer: instanceStreamingURL?.host) - let request = makeURLRequest(url: url, endpoint: endpoint, httpMethod: "GET") - return urlSession.webSocketTask(with: request) + var subprotocols: [String] = [] + if let oauthToken = critical.withLock({ $0.oauthToken }) { + subprotocols.append(oauthToken.accessToken) + } + return urlSession.webSocketTask(with: url, protocols: subprotocols) } public func mediaUpload(endpoint: Endpoint,