davidliu
Committed by GitHub

Protocol 8 (#112)

package io.livekit.android
import io.livekit.android.room.ProtocolVersion
import org.webrtc.PeerConnection
... ... @@ -17,6 +18,11 @@ data class ConnectOptions(
* capture and publish video track on connect, defaults to false
*/
val video: Boolean = false,
/**
* the protocol version to use with the server.
*/
val protocolVersion: ProtocolVersion = ProtocolVersion.v8
) {
internal var reconnect: Boolean = false
}
... ...
... ... @@ -4,6 +4,7 @@ import android.app.Application
import android.content.Context
import io.livekit.android.dagger.DaggerLiveKitComponent
import io.livekit.android.dagger.create
import io.livekit.android.room.ProtocolVersion
import io.livekit.android.room.Room
import io.livekit.android.room.RoomListener
import io.livekit.android.util.LKLog
... ... @@ -82,6 +83,7 @@ class LiveKit {
* @param url URL to LiveKit server (i.e. ws://mylivekitdeploy.io)
* @param listener Listener to Room events. LiveKit interactions take place with these callbacks
*/
@Deprecated("Use LiveKit.create and Room.connect instead. This is limited to max protocol 7.")
suspend fun connect(
appContext: Context,
url: String,
... ... @@ -94,7 +96,11 @@ class LiveKit {
val room = create(appContext, roomOptions, overrides)
room.listener = listener
room.connect(url, token, options)
val protocolVersion = maxOf(options.protocolVersion, ProtocolVersion.v7)
val connectOptions = options.copy(protocolVersion = protocolVersion)
room.connect(url, token, connectOptions)
return room
}
... ...
... ... @@ -128,6 +128,7 @@ constructor(
val queryParams = mutableListOf<Pair<String, String>>()
queryParams.add(CONNECT_QUERY_TOKEN to token)
queryParams.add(CONNECT_QUERY_PROTOCOL to options.protocolVersion.value.toString())
if (options.reconnect) {
queryParams.add(CONNECT_QUERY_RECONNECT to 1.toString())
... ... @@ -142,7 +143,6 @@ constructor(
// Client info
queryParams.add(CONNECT_QUERY_SDK to "android")
queryParams.add(CONNECT_QUERY_VERSION to clientInfo.version)
queryParams.add(CONNECT_QUERY_PROTOCOL to clientInfo.protocol.toString())
queryParams.add(CONNECT_QUERY_DEVICE_MODEL to clientInfo.deviceModel)
queryParams.add(CONNECT_QUERY_OS to clientInfo.os)
queryParams.add(CONNECT_QUERY_OS_VERSION to clientInfo.osVersion)
... ... @@ -604,7 +604,6 @@ constructor(
const val SD_TYPE_ANSWER = "answer"
const val SD_TYPE_OFFER = "offer"
const val SD_TYPE_PRANSWER = "pranswer"
const val PROTOCOL_VERSION = 7
const val SDK_TYPE = "android"
private val skipQueueTypes = listOf(
... ... @@ -627,4 +626,15 @@ constructor(
// iceServer("stun:stun4.l.google.com:19302"),
)
}
}
enum class ProtocolVersion(val value: Int) {
v1(1),
v2(2),
v3(3),
v4(4),
v5(5),
v6(6),
v7(7),
v8(8),
}
\ No newline at end of file
... ...
... ... @@ -7,7 +7,6 @@ import livekit.LivekitModels
internal fun getClientInfo() = with(LivekitModels.ClientInfo.newBuilder()) {
sdk = LivekitModels.ClientInfo.SDK.ANDROID
protocol = SignalClient.PROTOCOL_VERSION
version = BuildConfig.VERSION_NAME
os = SignalClient.SDK_TYPE
osVersion = Build.VERSION.RELEASE ?: ""
... ...