Javascript 当另一个协同程序正在等待下一条消息时,我不断收到无法调用recv()的错误
当我两次运行我的paddleLogic函数时,我得到一个错误“当另一个协同程序已经在等待下一条消息时,无法调用recv()”,即使我正在使用wait来确保它们不会同时尝试接收 我在第二次运行代码时没有调用逻辑函数,一切正常Javascript 当另一个协同程序正在等待下一条消息时,我不断收到无法调用recv()的错误,javascript,python,websocket,Javascript,Python,Websocket,当我两次运行我的paddleLogic函数时,我得到一个错误“当另一个协同程序已经在等待下一条消息时,无法调用recv()”,即使我正在使用wait来确保它们不会同时尝试接收 我在第二次运行代码时没有调用逻辑函数,一切正常 leftPaddlePos=等待桨逻辑(websocket,leftPaddlePos) 右桨位置=等待桨逻辑(对手[websocket],右桨位置) 异步逻辑(插座、pos): 尝试: key=wait asyncio.wait_for(socket.recv(),time
leftPaddlePos=等待桨逻辑(websocket,leftPaddlePos)
右桨位置=等待桨逻辑(对手[websocket],右桨位置)
异步逻辑(插座、pos):
尝试:
key=wait asyncio.wait_for(socket.recv(),timeout=0.01)
如果键==“1”且位置>0:
位置=位置-1
elif键==“2”且位置<60:
位置=位置+1
睡眠时间(0.003)
除asyncio.TimeoutError外:
pos=pos
返回位置
抱歉,如果这篇文章有点乱,这是我第一次问一个关于stackoverflow的问题。如果您需要更多信息/代码,我很乐意提供。您从哪里获得插座 我们有的是合作项目。它们是由它们彼此让出控制权来安排的。它们在调用
wait
时产生控制权。您的socket.recv
还通过产生控制在后台进行一些等待,因此,如果网络中的数据无法立即获得,则会输入两次recv
我想你会过得更好。否则,我将使用select()
(我甚至可以假设,像pong这样的实时游戏更容易以完全同步的方式实现,以帧速率为节奏。)使用socket.receive()在接收消息之前,我是否需要知道接收消息的字节数?