PyQt5链接WebSocket,可以实现简易QQ聊天

简介: PyQt5链接WebSocket,可以实现简易QQ聊天

一个简单的PyQt WebSocket示例:

from PyQt5.QtNetwork import QAbstractSocket, QTcpSocket, QHostAddress
from PyQt5.QtWebSockets import QWebSocket, QWebSocketServer
from PyQt5.QtCore import QUrl, QObject
class WebSocket(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.server = QWebSocketServer("WebSocket Server", QWebSocketServer.NonSecureMode, parent)
        self.server.newConnection.connect(self.handle_new_connection)
        self.clients = []
    def listen(self, port):
        address = QHostAddress.LocalHost
        if not self.server.listen(address, port):
            print("Failed to listen on port", port)
        else:
            print("WebSocket server listening on port", port)
    def handle_new_connection(self):
        client = self.server.nextPendingConnection()
        client.binaryMessageReceived.connect(self.handle_message)
        client.disconnected.connect(self.handle_disconnect)
        self.clients.append(client)
        print("Client connected:", client.peerAddress().toString())
    def handle_message(self, message):
        sender = self.sender()
        print("Message received from", sender.peerAddress().toString(), ":", message)
        for client in self.clients:
            if client != sender:
                client.sendBinaryMessage(message)
    def handle_disconnect(self):
        sender = self.sender()
        print("Client disconnected:", sender.peerAddress().toString())
        self.clients.remove(sender)
if __name__ == "__main__":
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    server = WebSocket()
    server.listen(8000)
    sys.exit(app.exec_())

这里我们使用了QWebSocketServerQWebSocket类来创建一个WebSocket服务器,并实现了基本的广播消息功能。当有客户端连接时,我们将客户端添加到clients列表中,并为每个客户端连接的binaryMessageReceived信号和disconnected信号连接对应的槽函数,以便在收到消息或客户端断开连接时执行相应的功能。在handle_message函数中,我们将收到的消息发送给除发送者以外的所有客户端。

相关文章
|
7月前
使用uniapp实现websocket聊天功能
使用uniapp实现websocket聊天功能
|
7月前
|
开发框架 网络协议 JavaScript
uniapp链接WebSocket 常用的api
uniapp链接WebSocket 常用的api
150 0
|
3月前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
231 0
|
14天前
|
网络协议 应用服务中间件 网络安全
odoo17在线聊天报错提示 Couldn‘t bind the websocket...
当 Odoo 17 报错 "Couldn't bind the websocket..." 时,通过检查和配置 WebSocket 端口、防火墙规则、代理服务器以及 Odoo 配置文件,可以有效解决此问题。确保每一步操作准确无误,最终重启相关服务,使配置生效。希望这些步骤能帮助您快速恢复 Odoo 的在线聊天功能。
29 1
|
7月前
|
前端开发
t-io websocket的聊天功能学习记录(二)
t-io websocket的聊天功能学习记录(二)
111 0
|
7月前
t-io websocket的聊天功能学习记录(一)
t-io websocket的聊天功能学习记录(一)
123 0
|
7月前
|
资源调度 JavaScript 前端开发
❤Nodejs 第十五章(简单websocket聊天实现)
【4月更文挑战第15天】本文介绍了在Node.js中实现简单WebSocket聊天的过程。首先通过`yarn`创建项目并安装`ws`和`express`依赖。接着,编写`WebSocketServer.js`建立WebSocket服务器,处理客户端连接、消息收发及错误。然后,用`server.js`创建一个静态文件服务器,提供`index.html`。`index.html`包含客户端的WebSocket连接和消息处理。启动两个服务器后,可以在浏览器中打开`index.html`进行聊天。最后,讨论了在Node.js 20+Vite环境下使用WebSocket时可能遇到的问题
72 0
|
Java
基于Tomcate、java、websocket 简单在线聊天
基于Tomcate、java、websocket 简单在线聊天
110 0
|
移动开发 监控 网络协议
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
|
7月前
|
开发框架 网络协议 JavaScript
uniapp链接WebSocket 常用的API
uniapp链接WebSocket 常用的API