Un programme de chat basé sur PyQt5 offrant des communications en temps réel entre utilisateurs.
En plus des commandes standard pour démarrer et arrêter le serveur, une commande d'administration a été ajoutée pour permettre à l'administrateur de voir tous les utilisateurs actuellement connectés.
show users
: Affiche la liste de tous les utilisateurs actuellement connectés avec leurs adresses IP et ports. Cette commande permet à l'administrateur de surveiller les utilisateurs actifs sur le serveur.
kick
: Permet à l'administrateur d'expulser un utilisateur du chat. Utilisez la commande suivie de l'identifiant de l'utilisateur et de la durée de l'expulsion en heures. Par exemple, kick username 1
expulsera l'utilisateur username
pendant 1 heure.
kill
: Cette commande arrête le serveur de chat immédiatement. Elle doit être utilisée avec précaution car elle déconnectera tous les utilisateurs actuellement en ligne.
Pour utiliser ces commandes, l'administrateur doit accéder à la console du serveur et saisir la commande souhaitée. Un retour approprié sera affiché dans la console pour confirmer l'action effectuée.
Le serveur est configuré pour fonctionner sur le port 8008
et utilise l'adresse IP locale 127.0.0.1
.
Les messages sont envoyés en suivant un format spécifique :
"texte_du_message ':;' nom_utilisateur ':;' nom_destinataire"
':;'
pour analyser les messages et déterminer leur type et destination.Lancez le script server.py
pour démarrer le serveur. Si le message "Le serveur de chat commence à fonctionner..." s'affiche, le serveur est prêt.
Les messages envoyés par vous-même apparaissent en bleu, et ceux reçus des autres en vert.
Sélectionnez un utilisateur pour entrer en mode chat privé avec cette personne. Les messages apparaissent en rouge.
En sélectionnant '------Chat de groupe-------', vous revenez au mode chat de groupe.
V3 correspond à un serveur textuel avec un client graphique, et remplit toutes les exigences de SAE302.
V4, quant à lui, représente un serveur graphique et un client graphique. Toutefois, des problèmes sont survenus lors des interactions entre le client et le serveur, empêchant l'affichage correct sur l'interface utilisateur du client. Bien que le système permette à l'administrateur d'approuver les demandes d'accès aux canaux privés, les problèmes d'interaction ont causé une défaillance dans la réception des messages de réponse appropriés par le client, l'empêchant ainsi de rejoindre les canaux. Vous pouvez voir sur la console que le message envoyé par le client a été reçu avec succès mais qu'il y a eu un problème avec le retour.
Je pense que le problème réside dans les fonctions d'envoi et de réception, mais la complexité du code a augmenté en raison de la nécessité d'adapter le serveur graphique à l'interface utilisateur. Ce problème pourrait être résolu si nous avions plus de temps. L'utilisation de QT pour la création de l'interface utilisateur est très pratique, mais le débogage du code nécessite plus de temps.
Description : Intégration d'un bouton emoji pour permettre aux utilisateurs de sélectionner et d'insérer des emojis dans leurs messages de chat.
Implémentation :
Exemple de Code :
def insert_emoji(self):
current_text = self.plainTextEdit_2.toPlainText()
emoji = "😊" # Exemple d'emoji
new_text = current_text + emoji
self.plainTextEdit_2.setPlainText(new_text)
Ce code peut être étendu pour inclure une gamme complète d'emojis.
Visualisation :
Description : Méthode pour afficher des notifications lors de la réception de nouveaux messages dans l'application de chat.
Détails de l'Implémentation :
QtCore.pyqtSignal(str)
pour transmettre le contenu du message.new_message_signal
à la méthode show_notification
.show_notification
reçoit le contenu du message et l'affiche.Code Concerné :
# Définition du signal
new_message_signal = QtCore.pyqtSignal(str)
# Connexion du signal
self.new_message_signal.connect(self.show_notification)
# Réception et traitement du message
def recv(self):
# ...
self.new_message_signal.emit('new_message:' + data)
# Méthode de notification
def show_notification(self, message):
QMessageBox.information(self, "新消息", message)
Visualisation :