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函数中,我们将收到的消息发送给除发送者以外的所有客户端。

相关文章
|
3月前
使用uniapp实现websocket聊天功能
使用uniapp实现websocket聊天功能
|
3月前
|
开发框架 网络协议 JavaScript
uniapp链接WebSocket 常用的api
uniapp链接WebSocket 常用的api
37 0
|
9月前
|
Java
基于Tomcate、java、websocket 简单在线聊天
基于Tomcate、java、websocket 简单在线聊天
79 0
|
5月前
|
开发框架 网络协议 JavaScript
uniapp链接WebSocket 常用的API
uniapp链接WebSocket 常用的API
|
10月前
|
移动开发 监控 网络协议
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
|
9月前
|
存储 JavaScript 前端开发
SpringBoot集成WebSocket实现及时通讯聊天功能!!!
SpringBoot集成WebSocket实现及时通讯聊天功能!!!
250 0
|
9月前
|
开发框架 JavaScript 前端开发
如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?
如何使用SpringBoot和Netty实现一个WebSocket服务器,并配合Vue前端实现聊天功能?
200 0
|
10月前
|
前端开发 JavaScript
Netty异步NIO框架(二)websocket 前端后端聊天 私聊及群聊
Netty异步NIO框架(二)websocket 前端后端聊天 私聊及群聊
|
前端开发 Java 应用服务中间件
SpringBoot整合Netty搭建高性能Websocket服务器(实现聊天功能)
之前使用Springboot整合了websocket,实现了一个后端向前端推送信息的基本小案例,这篇文章主要是增加了一个新的框架就是Netty,实现一个高性能的websocket服务器,并结合前端代码,实现一个基本的聊天功能。你可以根据自己的业务需求进行更改。 这里假设你已经了解了Netty和websocket的相关知识,仅仅是想通过Springboot来整合他们。根据之前大家的需求,代码已经上传到了github上。在文末给出。 废话不多说,直接看步骤代码。
1588 0
SpringBoot整合Netty搭建高性能Websocket服务器(实现聊天功能)
WebSocket实现线上聊天就是这么简单!
WebSocket实现线上聊天就是这么简单!
WebSocket实现线上聊天就是这么简单!