我在 python 中使用 socketIO-client 包来测试我的服务器代码。 这是一个简单的客户端,但运行以下行总是需要大约 1 分钟:
socketIO = SocketIO('localhost',3003)
我想知道如何解决这个问题?
我使用的是eventlet,并且没有在虚拟环境中安装socketIO-client。 会导致这个问题吗?
from socketIO_client import SocketIO, BaseNamespace
from datetime import datetime
Devices = {}
temp_time = datetime.now()
class Namespace(BaseNamespace):
def on_connect(self):
print('[Connected]')
for device in Devices:
self.emit('register', device)
time.sleep(1)
def funcA():
do something
def funcB():
do something
print '1:', datetime.now()-temp_time
socketIO = SocketIO('localhost', 3003)
print '2:', datetime.now()-temp_time
socketIO.define(Namespace)
socketIO.on('eventA', funcA)
socketIO.on('eventB', funcB)
socketIO.wait()
客户端部分的输出:
1: 0:00:00.000074
DEBUG:root:localhost:3003/socket.io [transport selected] xhr-polling
DEBUG:root:localhost:3003/socket.io [heartbeat reset]
2: 0:01:00.019828
DEBUG:root:localhost:3003/socket.io [socket.io packet received] 0
[Connected]
@Markw63 是正确答案。
我也有同样的问题,初始化代码SocketIO('0.0.0.0',9000)总是延迟大约10秒。 @Markw63 的建议救了我很多。
我有两个路由器,一个是有线的,另一个是无线的。
当我删除有线路由(route del default gw 192.168.1.1)后,代码:SocketIO('0.0.0.0',9000)运行得非常快,没有延迟。
将 ip 从 '0.0.0.0' 更改为 '127.0.0.1' 具有相同的效果。
我的 Python 套接字 ioclient 可以非常快速地连接到外部 Node.js 服务器。 这可能是路由/DNS 问题 本地主机有时会表现出奇怪的路由行为。 使用 127.0.0.1 而不是 localhost 作为 url 来消除路由/DNS 超时