小编shm*_*mth的帖子

了解 WebRTC 中的 SFU、TURN 服务器

如果我正在构建 WebRTC 应用程序并使用 Selective Forwarding Unit 媒体服务器,这是否意味着我将不需要 STUN / TURN 服务器?

据我了解,STUN 服务器用于客户端发现其公共 IP/端口,而 TURN 服务器用于在客户端无法通过 STUN 直接相互连接时在客户端之间中继数据。

我的问题是,如果我使用公共地址部署我的 SFU 媒体服务器,这是否消除了对 STUN 和 TURN 服务器的需求?由于数据将始终通过 SFU 中继,并且客户端/对等方实际上永远不会直接相互交谈?

但是,我注意到 Kurento(具有 SFU 功能的流行媒体服务器)的安装指南包含有关配置 STUN 或 TURN 服务器的部分。为什么需要 STUN 或 TURN 服务器?

stun webrtc turn kurento

14
推荐指数
1
解决办法
3009
查看次数

调用函数列表的大多数pythonic方法

我有一个功能列表,像这样:

def foo(a, b):
    # do stuff
    return True # or False

def bar(c):
    # do stuff
    return False # or True

def baz(d, e, f):
    # do stuff
    return True # or False
Run Code Online (Sandbox Code Playgroud)

而且我想依次调用它们,并且仅在前一个返回时才继续进行下一个True,如下所示:

if foo(1, 2):
    if bar(3):
        if baz(4, 5, 6):
            print("Success!")
Run Code Online (Sandbox Code Playgroud)

现在,我知道如果我所有的函数都接受相同的参数,则可以执行以下操作:

steps = [foo, bar, baz]
if all(func(*args) for func in steps):
    print("Success!")
Run Code Online (Sandbox Code Playgroud)

因为all一旦达到False返回值就会短路。但是,它们并不都接受相同的参数。

什么是最干净的方法来实现这一目标?

编辑:感谢您压缩args的建议。在每个函数都返回某个值的更一般的情况下,我想使用前一个函数的返回值(无论它是什么)来决定是否运行下一个函数?每个函数可能还需要先前函数的某些返回值作为参数。

python python-3.x

-3
推荐指数
1
解决办法
91
查看次数

标签 统计

kurento ×1

python ×1

python-3.x ×1

stun ×1

turn ×1

webrtc ×1