0
我做簡單的GUI聊天程序從服務器調用回調函數蟒蛇更新客戶端的GUI控件
:
def broadcast(self, msg):
with lock:
print("bloadcast calls")
global callbacks
global buf
for user, callback in callbacks.items():
if user not in buf or buf[user] == None:
buf[user] = (msg,)
else:
buf[user] = buf[user] + (msg,)
callback()
回調函數發出客戶信號
service.root.accept(idt, chat.update.update.emit)
在服務器的接受功能
callbacks[idt] = rpyc.async(callback)
這是它
class Updater(QObject):
update = pyqtSignal()
在我的客戶端類
self.update = Updater()
self.update.update.connect(self.listen)
,聽方法是
def listen(self):
msg = self.service.root.get_buf(self.idt)//get server's message by call server's function
for m in msg:
self.log.append(m)
所以服務器調用回調函數,並且使客戶端更新GUI控件信號
當有一個客戶時,它運作良好。但是當有多個客戶端時,例如客戶端A和客戶端B,A -message->服務器和服務器只更新A的GUI部件。 B的回調被阻塞,直到B發送消息給服務器。我希望客戶端的GUI更新調用立即像interupt呼叫
我該怎麼做?