套接字连接在3次迭代后中止 - python

时间:2014-06-01 20:47:38

标签: python sockets websocket

我正在开发一个我希望将音频流传输到网页的应用程序。当我打开连接并发送消息时,服务器和客户端会收到消息(s.send('Hi'))。但是当我开始循环时,我的脚本在完成3次迭代后停止然后退出。

我注意到服务器在第一次迭代后抛出creating default object from empty value错误

import websocket
# https://github.com/liris/websocket-client

HOST = 'ws://127.0.0.1:8080'

s = websocket.create_connection(HOST)

s.send('Hii')

i = 0
while 1:
    i += 1
    print(i)
    s.send(str(i))
    time.sleep(0.5)

这是完整的错误追溯

1
2
3
Traceback (most recent call last):
  File "E:\Redux\Win32\streamingdata.py", line 20, in <module>
    s.send(str(i))
  File "C:\Python33\lib\site-packages\websocket\__init__.py", line 656, in send
    return self.send_frame(frame)
  File "C:\Python33\lib\site-packages\websocket\__init__.py", line 680, in send_frame
    l = self._send(data)
  File "C:\Python33\lib\site-packages\websocket\__init__.py", line 900, in _send
    return self.sock.send(data)
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

哪里出错了?使用纯套接字到远程侦听器,脚本执行,服务器接收消息。使用websocket失败了。谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

尝试将time.sleep(0.5)替换为gevent.sleep(0.5)

由于websocket基于gevent,您应该阻止使用阻止操作。

由于time.sleep阻止了一个,您可能会阻止通过webscocket发送数据,gevent.sleep在睡眠期间没有机会进行通信。

gevent会给{{1}} greenlet一个生存的机会。