当前位置: 首页 > 面试题库 >

pyqt和websocket客户端。在后台听websocket

姚培
2023-03-14
问题内容

我有一个PyQt Gui应用程序。此应用程序有一个主窗口,应在启动后打开。

应用程序应监听websocket。

我试着解决它是这样的:

...

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    window = Window()
    window.show()

    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://localhost:8080/chatsocket",
                                on_message = on_message,
                                on_error = on_error,
                                on_close = on_close)
#    ws.on_open = on_open

    ws.run_forever()

    sys.exit(app.exec_())

但是,启动应用程序后,主窗口没有打开。

如果没有“ ws.run_forever()”行,则打开主窗口,但应用程序不侦听websocket。

我需要在“背景”中收听网络套接字吗?你能帮助我吗?

PS :(对不起,我的英语)


问题答案:

感谢enginefree。

我做这个

class Window(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Window, self).__init__()

        self.thread = ListenWebsocket()
        self.thread.start()

...


class ListenWebsocket(QtCore.QThread):
    def __init__(self, parent=None):
        super(ListenWebsocket, self).__init__(parent)

        websocket.enableTrace(True)

        self.WS = websocket.WebSocketApp("ws://localhost:8080/chatsocket",
                                on_message = self.on_message,
                                on_error = self.on_error,
                                on_close = self.on_close)

    def run(self):
        #ws.on_open = on_open

        self.WS.run_forever()


    def on_message(self, ws, message):
        print message

    def on_error(self, ws, error):
        print error

    def on_close(self, ws):
        print "### closed ###"

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    QtGui.QApplication.setQuitOnLastWindowClosed(False)

    window = Window()
    window.show()

    sys.exit(app.exec_())


 类似资料:
  • 我正在努力与Netty 4.0.8网络套接字客户端示例和SSL,我似乎无法将数据发送到Netty SSL网络套接字服务器示例。尽管围绕这个问题已经有很多帖子了,(我相信我已经浏览了所有的帖子),最常见的建议是在管道的开头添加一个sslHandler,但它不起作用。握手似乎是成功的,因为它也表明了一个相关的问题在这里。 我记得4.0版的情况也一样。0,但我还是设法让它工作了。然而,当我升级到4.0时

  • 我已经设置了一个WebSocket服务器使用超文本传输协议-kit,应该接受Web套接字连接。它是超文本传输协议-kit留档中显示的基本示例。 问题是:如何创建连接到它的Clojure客户端? 客户端可以是任何Clojure超文本传输协议库,我真的不介意。我已经了解了Javascript客户端,我相信Java有一个可以从Clojure中使用的API。但是我要找的是一个Clojure库,它支持客户端

  • 基本上,我希望监听我的rest api调用。就像有人向我的rest API发送数据一样。(例如:http://localhost:8080/api/people),然后websocket客户机侦听并可以从该地址获得响应,如果有人调用该地址。(就像使用postman从rest api获得响应一样,websocet客户机可以监听响应。)。我有点迷路了,我不知道如何用websocket客户端监听我的re

  • 我有点困惑如何创建超文本传输协议-kit WebSocket客户端。在网站上有一个如何创建WebSocket服务器的例子,创建客户端可能是微不足道的,但我似乎不能得到它的权利。有没有不关注Javascript客户端的例子? P. S.在这个问题中进行了一些讨论,但仅举了一些例子,并指示超文本传输协议-kit现在支持WebSocket客户端。

  • Hyperf 提供了对 WebSocket Client 的封装,可基于 hyperf/websocket-client 组件对 WebSocket Server 进行访问; 安装 composer require hyperf/websocket-client 使用 组件提供了一个 Hyperf\WebSocketClient\ClientFactory 来创建客户端对象 Hyperf\Web

  • WebSocketClient 结构体指针上只有如下两个可设置的字段: Header 字段 用来设置自定义的 HTTP 头信息。 MaxConcurrentRequests 方法 该方法返回最大并发请求数。 SetMaxConcurrentRequests 方法 该方法用于设置最大并发请求数,当并发请求超过该设置之后,后面的请求将会排队等待。该设置默认值为 10。