由于socket.recv()而阻止客户端GUI

时间:2018-03-23 16:13:31

标签: python blocking tcpsocket

关于Python TCP socket.recv()是阻塞调用,我有一个非常小的问题。我正在制作一个IRC虽然是Python(作业),但我已接近尾声,但遇到了一个小小的颠簸。我正在尝试让服务器推送包含{"ChannelName": [users]}的dict的更新,并且我使用JSON进行序列化/反序列化(所以我的问题不是实际的消息)。我发送/接收一切都很好。我最大的问题是socket.recv()没有被阻止。

我所做的是类似的事(请原谅我的伪代码):

async def getchannelsandusers(self):
     # Code to get serialized json

def sendchannelsandusers(self):
     # for each user send the code from self.getchannelsandusers

def threadtoupdate(self):
     t = threading.Timer(5, self.sendchannelsandusers)
     t.start()

def funcwhereblockis(self):
     self.threadtoupdate()
     usermessage = socket.recv(size).decode('utf8') # <- gets stuck here only updates once

我的最终目标是通过位于服务器端的socket.send()继续使用频道中的频道和用户更新客户端GUI。

非常感谢任何指导。

0 个答案:

没有答案