我正在尝试让 python RTC 客户端使用全局变量,以便我可以将它重用于多个功能。
我将它用于我一直在从事的 RTC 项目,我有一个功能正常的 js 客户端,但这些函数的工作方式与 python 不同。服务端和js客户端的函数都是我自己的,没有参数,希望避免在我做的python客户端上使用。
我一直在使用他们 github 中的 aiortc Cli.py 作为我的 python 客户端应该如何工作的基础。但我不会异步运行它,因为我试图学习和控制事件何时发生。源代码可以在这里找到,我指的是第 71-72 行中的代码 https://github.com/aiortc/aiortc/blob/master/examples/datachannel-cli/cli.py
这是我试图正确运行的代码
我只插入了与当前问题相关的代码
import argparse
import asyncio
import logging
import time
from aiortc import RTCIceCandidate, RTCPeerConnection, RTCSessionDescription
from aiortc.contrib.signaling import add_signaling_arguments, create_signaling
pc = None
channel = None
def createRTCPeer():
print("starting RTC Peer")
pc = RTCPeerConnection()
print("created Peer", pc)
return pc
def pythonCreateDataChannel():
print("creating datachannel")
channel = pc.CreateDataChannel("chat")
createRTCPeer 函数按预期工作,它创建一个 RTC 对象,但我的 pythonCreateDataChannel 报告错误,如果我在使用它之前将其设置为“无”
AttributeError:“NoneType”对象没有属性“CreateDataChannel”
它会报告
NameError:名称“通道”未定义
如果我没有事先将它设置在全局范围内,pc 也是如此