我正在创建一个套接字客户端并尝试获取一些数据。为此,我需要通过套接字连接到 Web 服务器,服务器实际上创建了另一个套接字,该套接字侦听并等待数据发送回客户端。我在下面的代码中遇到的问题是我的套接字客户端不等待来自服务器的传入数据而只接受空数据。如何使用 Python 套接字等待来自服务器的非空数据?我的代码:import sysimport jsonimport socketIO_clientimport timehost = 'https://SOME_URL'socketIO = socketIO_client.SocketIO(host, params={"email" : "edmund@gmail.com"})def on_connect(*args): print "socket.io connected"def on_disconnect(*args): print "socketIO diconnected"socketIO.on('connect', on_connect)socketIO.on('disconnect', on_disconnect)def on_response_state(*args): print args # Prints ()socketIO.emit('receive_state',on_response_state)socketIO.wait_for_callbacks(seconds=3)
3 回答

红颜莎娜
TA贡献1842条经验 获得超12个赞
将接收套接字放在一个 while 线程中。
像这样:
def rec(self):
while 1:
sleep 0.01
rdata = self.clientsocket.recv(self.buffsize)
print("rec from server: ", rdata.decode('utf8'),'\n','press enter to continue')
....
t2 = threading.Thread(target=y.rec, name="rec")
t2.start()

繁花不似锦
TA贡献1851条经验 获得超4个赞
由于您使用该SocketIO库来包含参数(使用requests实现),并且想要发出消息,因此您可以通过不指定等待时间来无限期地等待响应。
with SocketIO(host, params={"email" : "edmund@gmail.com"}) as socketIO:
def on_response_state(*args):
print args # Prints ()
socketIO.emit('receive_state', on_response_state)
socketIO.wait()
添加回答
举报
0/150
提交
取消