Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David Liu
2021-03-17 12:38:21 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
4b06b6549b45b8a705fb1fdc2d42b54a5026e29b
4b06b654
1 parent
d7f069dd
Enable binary encoding
隐藏空白字符变更
内嵌
并排对比
正在显示
3 个修改的文件
包含
33 行增加
和
14 行删除
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/JsonFormatModule.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCClient.kt
livekit-android-sdk/src/main/java/io/livekit/android/dagger/InjectionNames.kt
查看文件 @
4b06b65
...
...
@@ -7,5 +7,7 @@ class InjectionNames {
const val DISPATCHER_IO = "dispatcher_io";
const val DISPATCHER_MAIN = "dispatcher_main"
const val DISPATCHER_UNCONFINED = "dispatcher_unconfined"
const val SIGNAL_JSON_ENABLED = "signal_json_enabled"
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/dagger/JsonFormatModule.kt
查看文件 @
4b06b65
...
...
@@ -3,6 +3,7 @@ package io.livekit.android.dagger
import com.google.protobuf.util.JsonFormat
import dagger.Module
import dagger.Provides
import javax.inject.Named
@Module
class JsonFormatModule {
...
...
@@ -16,5 +17,9 @@ class JsonFormatModule {
fun jsonFormatPrinter(): JsonFormat.Printer {
return JsonFormat.printer()
}
@Provides
@Named(InjectionNames.SIGNAL_JSON_ENABLED)
fun signalJsonEnabled(): Boolean = false
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCClient.kt
查看文件 @
4b06b65
...
...
@@ -2,6 +2,7 @@ package io.livekit.android.room
import com.github.ajalt.timberkt.Timber
import com.google.protobuf.util.JsonFormat
import io.livekit.android.dagger.InjectionNames
import io.livekit.android.room.track.Track
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
...
...
@@ -13,10 +14,12 @@ import okhttp3.Response
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString
import okio.ByteString.Companion.toByteString
import org.webrtc.IceCandidate
import org.webrtc.PeerConnection
import org.webrtc.SessionDescription
import javax.inject.Inject
import javax.inject.Named
class RTCClient
@Inject
...
...
@@ -24,6 +27,8 @@ constructor(
private val websocketFactory: WebSocket.Factory,
private val fromJson: JsonFormat.Parser,
private val toJson: JsonFormat.Printer,
@Named(InjectionNames.SIGNAL_JSON_ENABLED)
private val useJson: Boolean,
) : WebSocketListener() {
private var isConnected = false
...
...
@@ -55,21 +60,16 @@ constructor(
fromJson.merge(text, signalResponseBuilder)
val response = signalResponseBuilder.build()
if (!isConnected) {
// Only handle joins if not connected.
if (response.hasJoin()) {
isConnected = true
listener?.onJoin(response.join)
} else {
Timber.e { "out of order message?" }
}
return
}
handleSignalResponse(response)
}
override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
super.onMessage(webSocket, bytes)
val byteArray = bytes.toByteArray()
val signalResponseBuilder = Rtc.SignalResponse.newBuilder()
.mergeFrom(byteArray)
val response = signalResponseBuilder.build()
handleSignalResponse(response)
}
override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {
...
...
@@ -177,8 +177,14 @@ constructor(
if (!isConnected || currentWs != null) {
throw IllegalStateException("not connected!")
}
val message = toJson.print(request)
val sent = currentWs?.send(message) ?: false
val sent: Boolean
if (useJson) {
val message = toJson.print(request)
sent = currentWs?.send(message) ?: false
} else {
val message = request.toByteArray().toByteString()
sent = currentWs?.send(message) ?: false
}
if (!sent) {
Timber.d { "error sending request: $request" }
...
...
@@ -188,7 +194,13 @@ constructor(
fun handleSignalResponse(response: Rtc.SignalResponse) {
if (!isConnected) {
Timber.e { "Received response while not connected. ${toJson.print(response)}" }
// Only handle joins if not connected.
if (response.hasJoin()) {
isConnected = true
listener?.onJoin(response.join)
} else {
Timber.e { "Received response while not connected. ${toJson.print(response)}" }
}
return
}
when (response.messageCase) {
...
...
请
注册
或
登录
后发表评论