使用 RFC 小部件从服务器更新客户端的 GUI 小部件
Update client's GUI widget from Server with RFC widget
我用 python
制作简单的 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()
在我的客户中class
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 更新调用立即像中断调用一样
我该怎么做?
只需添加一行
rpyc.BgServingThread(service)#service is rpyc connection
我用 python
制作简单的 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()
在我的客户中class
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 更新调用立即像中断调用一样
我该怎么做?
只需添加一行
rpyc.BgServingThread(service)#service is rpyc connection