mirror of
https://github.com/Xevion/tcp-chat.git
synced 2025-12-06 05:16:45 -06:00
small reorganization to old client/server, client fixed and sending messages to server
This commit is contained in:
@@ -1,15 +1,17 @@
|
||||
import socket
|
||||
from pprint import pprint
|
||||
|
||||
from PyQt5.QtCore import QThread, pyqtSignal
|
||||
from PyQt5.QtCore import QThread, pyqtSignal, Qt, QEvent
|
||||
from PyQt5.QtWidgets import QMainWindow, QDialog, QDialogButtonBox, QVBoxLayout
|
||||
|
||||
from config import config
|
||||
from client.MainWindow import Ui_MainWindow
|
||||
from config import config
|
||||
|
||||
IP = '127.0.0.1'
|
||||
PORT = 55555
|
||||
|
||||
HEADER_LENGTH = int(config.get(IP, 'HeaderLength'))
|
||||
HEADER_LENGTH = 10
|
||||
|
||||
|
||||
class ReceiveWorker(QThread):
|
||||
messages = pyqtSignal(str)
|
||||
@@ -24,9 +26,12 @@ class ReceiveWorker(QThread):
|
||||
while True:
|
||||
try:
|
||||
length = int(self.client.recv(HEADER_LENGTH).decode('ascii'))
|
||||
message = self.client.recv(length)
|
||||
message = self.client.recv(length).decode('ascii')
|
||||
if message == 'NICK':
|
||||
self.client.send(self.nickname.encode('ascii'))
|
||||
header = f'{len(self.nickname):<{HEADER_LENGTH}}'
|
||||
final = header + self.nickname
|
||||
pprint(final)
|
||||
self.client.send(final.encode('ascii'))
|
||||
else:
|
||||
self.messages.emit(message)
|
||||
except:
|
||||
@@ -67,10 +72,26 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
|
||||
self.nickname = 'Default'
|
||||
|
||||
self.textEdit.installEventFilter(self)
|
||||
|
||||
self.receiveThread = ReceiveWorker(self.client, self.nickname)
|
||||
self.receiveThread.messages.connect(self.addMessage)
|
||||
self.receiveThread.start()
|
||||
|
||||
self.show()
|
||||
|
||||
def addMessage(self, message: str):
|
||||
def eventFilter(self, obj, event):
|
||||
if event.type() == QEvent.KeyPress and obj is self.textEdit:
|
||||
if event.key() == Qt.Key_Return and self.textEdit.hasFocus():
|
||||
self.sendMessage(self.textEdit.toPlainText())
|
||||
self.textEdit.clear()
|
||||
return super().eventFilter(obj, event)
|
||||
|
||||
def addMessage(self, message: str) -> None:
|
||||
self.textBrowser.append(message)
|
||||
|
||||
def sendMessage(self, message: str) -> None:
|
||||
header = f'{len(message):<{HEADER_LENGTH}}'
|
||||
final = header + message
|
||||
pprint(final)
|
||||
self.client.send(final.encode('ascii'))
|
||||
|
||||
Reference in New Issue
Block a user