1

我正在尝试让 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 也是如此

4

1 回答 1

0

你有没有试过这个:

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")
    global pc
    pc = RTCPeerConnection()
    print("created Peer", pc)

def pythonCreateDataChannel():
    print("creating datachannel")
    global channel
    channel = pc.CreateDataChannel("chat")
于 2019-09-27T11:57:01.640 回答