Użyj origin realtime z bootstrapu
This commit is contained in:
@@ -117,6 +117,7 @@ data class RealtimeConfigDto(
|
||||
val reverbEnabled: Boolean = false,
|
||||
val reverbAppKey: String? = null,
|
||||
val reverbWsBaseUrl: String? = null,
|
||||
val reverbOrigin: String? = null,
|
||||
)
|
||||
|
||||
data class RoutesBucketDto(
|
||||
|
||||
@@ -43,17 +43,17 @@ class DriverRepositoryLiveSyncGateway(
|
||||
}
|
||||
|
||||
interface LiveWebSocketFactory {
|
||||
fun newWebSocket(url: String, listener: WebSocketListener): WebSocket
|
||||
fun newWebSocket(url: String, origin: String?, listener: WebSocketListener): WebSocket
|
||||
}
|
||||
|
||||
class OkHttpLiveWebSocketFactory(
|
||||
private val client: OkHttpClient,
|
||||
) : LiveWebSocketFactory {
|
||||
override fun newWebSocket(url: String, listener: WebSocketListener): WebSocket =
|
||||
override fun newWebSocket(url: String, origin: String?, listener: WebSocketListener): WebSocket =
|
||||
client.newWebSocket(
|
||||
Request.Builder()
|
||||
.url(url)
|
||||
.header("Origin", websocketOrigin(url))
|
||||
.header("Origin", origin?.takeIf { it.isNotBlank() } ?: websocketOrigin(url))
|
||||
.build(),
|
||||
listener,
|
||||
)
|
||||
@@ -248,7 +248,7 @@ class DriverLiveSyncClient(
|
||||
}
|
||||
|
||||
private fun connectNow(resetAttempt: Boolean = false) {
|
||||
val wsUrl = synchronized(lock) {
|
||||
val (wsUrl, origin) = synchronized(lock) {
|
||||
val config = realtimeConfig ?: return
|
||||
val id = driverId ?: return
|
||||
if (!desiredActive || !foregroundActive || !networkAvailable || !isConfigUsable(config)) return
|
||||
@@ -262,11 +262,15 @@ class DriverLiveSyncClient(
|
||||
|
||||
val appKey = config.reverbAppKey.orEmpty()
|
||||
val wsBaseUrl = config.reverbWsBaseUrl.orEmpty()
|
||||
wsBaseUrl.trimEnd('/') + "/" + appKey + "?protocol=7&client=android&version=1.0&flash=false"
|
||||
Pair(
|
||||
wsBaseUrl.trimEnd('/') + "/" + appKey + "?protocol=7&client=android&version=1.0&flash=false",
|
||||
config.reverbOrigin,
|
||||
)
|
||||
}
|
||||
|
||||
val socket = webSocketFactory.newWebSocket(
|
||||
wsUrl,
|
||||
origin,
|
||||
object : WebSocketListener() {
|
||||
override fun onMessage(webSocket: WebSocket, text: String) {
|
||||
handleMessage(webSocket, text)
|
||||
|
||||
Reference in New Issue
Block a user