mirror of
https://github.com/livekit/livekit.git
synced 2026-04-01 19:35:43 +00:00
* ForceTCP only for supported clients Revert back to standard if forceRelay with TLS fails Don't force TLS unless it's configured * fix lint
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package rtc
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/livekit/protocol/livekit"
|
|
)
|
|
|
|
type ClientInfo struct {
|
|
*livekit.ClientInfo
|
|
}
|
|
|
|
func (c ClientInfo) SupportsAudioRED() bool {
|
|
return c.ClientInfo != nil && c.ClientInfo.Browser != "firefox" && c.ClientInfo.Browser != "safari"
|
|
}
|
|
|
|
// CompareVersion compares two semver versions
|
|
// returning 1 if current version is greater than version
|
|
// 0 if they are the same, and -1 if it's an earlier version
|
|
func (c ClientInfo) CompareVersion(version string) int {
|
|
if c.ClientInfo == nil {
|
|
return -1
|
|
}
|
|
parts0 := strings.Split(c.ClientInfo.Version, ".")
|
|
parts1 := strings.Split(version, ".")
|
|
ints0 := make([]int, 3)
|
|
ints1 := make([]int, 3)
|
|
for i := 0; i < 3; i++ {
|
|
if len(parts0) > i {
|
|
ints0[i], _ = strconv.Atoi(parts0[i])
|
|
}
|
|
if len(parts1) > i {
|
|
ints1[i], _ = strconv.Atoi(parts1[i])
|
|
}
|
|
if ints0[i] > ints1[i] {
|
|
return 1
|
|
} else if ints0[i] < ints1[i] {
|
|
return -1
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (c ClientInfo) SupportsICETCP() bool {
|
|
if c.ClientInfo == nil {
|
|
return false
|
|
}
|
|
if c.ClientInfo.Sdk == livekit.ClientInfo_GO {
|
|
return false
|
|
}
|
|
if c.ClientInfo.Sdk == livekit.ClientInfo_SWIFT {
|
|
// ICE/TCP added in 1.0.5
|
|
return c.CompareVersion("1.0.5") >= 0
|
|
}
|
|
// most SDKs support ICE/TCP
|
|
return true
|
|
}
|