From b24d642f7494b6fb609e92759716cab8c6fffed9 Mon Sep 17 00:00:00 2001 From: Gao Date: Thu, 15 Jun 2023 12:01:12 +0200 Subject: [PATCH] add and test web servers --- livingPlotPanel/Register.py | 9 ++++ livingPlotPanel/WebServer.py | 83 ++++++++++++++++++++++++++++++++ livingPlotPanel/testWebClient.py | 12 +++++ livingPlotPanel/testWebServer.py | 9 ++++ testMongoDB.ipynb | 49 ++++--------------- 5 files changed, 122 insertions(+), 40 deletions(-) create mode 100644 livingPlotPanel/Register.py create mode 100644 livingPlotPanel/WebServer.py create mode 100644 livingPlotPanel/testWebClient.py create mode 100644 livingPlotPanel/testWebServer.py diff --git a/livingPlotPanel/Register.py b/livingPlotPanel/Register.py new file mode 100644 index 0000000..8cdab7a --- /dev/null +++ b/livingPlotPanel/Register.py @@ -0,0 +1,9 @@ + + + +class Register: + + def __init__(self) -> None: + pass + + \ No newline at end of file diff --git a/livingPlotPanel/WebServer.py b/livingPlotPanel/WebServer.py new file mode 100644 index 0000000..8eb81e7 --- /dev/null +++ b/livingPlotPanel/WebServer.py @@ -0,0 +1,83 @@ +import socket +from PyQt5 import QtCore + + +def print_new_message(msg): + print(msg) + + +class webServer(QtCore.QObject): + + newMessageSignal = QtCore.pyqtSignal(str) + + def __init__(self, host='localhost', port=12321) -> None: + + self.host = host + self.port = port + self.socket = None + self.server = None + self.serverAddr = None + + QtCore.QObject.__init__(self) + + self.newMessageSignal.connect(print_new_message) + + def __enter__(self): + + # create a socket connection + self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + # bind the socket with host and port + self.socket.bind((self.host, self.port)) + # allow maximum 1 connection to the socket + self.socket.listen(1) + + return self + + def __exit__(self, *args): + self.socket.close() + + def close(self): + self.socket.close() + + def start_listening(self): + + while True: + # wait till a client accept connection + self.server, self.serverAddr = self.socket.accept() + + msg = self.server.recv(1024) + msg = msg.decode() + self.newMessageSignal.emit(msg) + + +class webClient(object): + + def __init__(self, host='localhost', port=12321) -> None: + + self.host = host + self.port = port + self.socket = None + self.client = None + + def __enter__(self): + + # create a socket connection + self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + + # connect it to server and port number on local computer. + self.socket.connect((self.host, self.port)) + self.client = self.socket + + return self + + def __exit__(self, *args): + self.socket.close() + + def close(self): + self.socket.close() + + def connect(self): + self.socket.connect((self.host, self.port)) + + def send(self, msg): + self.client.send(msg.encode()) \ No newline at end of file diff --git a/livingPlotPanel/testWebClient.py b/livingPlotPanel/testWebClient.py new file mode 100644 index 0000000..cf9a467 --- /dev/null +++ b/livingPlotPanel/testWebClient.py @@ -0,0 +1,12 @@ +from WebServer import webServer, webClient + +if __name__ == '__main__': + + host = 'localhost' + port = 12321 + + with webClient(host, port) as client: + client.send('hello') + client.send('hello') + client.send('hello') + client.send('hello') \ No newline at end of file diff --git a/livingPlotPanel/testWebServer.py b/livingPlotPanel/testWebServer.py new file mode 100644 index 0000000..b71e18c --- /dev/null +++ b/livingPlotPanel/testWebServer.py @@ -0,0 +1,9 @@ +from WebServer import webServer, webClient + +if __name__ == '__main__': + + host = 'localhost' + port = 12321 + + with webServer(host, port) as server: + server.start_listening() \ No newline at end of file diff --git a/testMongoDB.ipynb b/testMongoDB.ipynb index 637c9c3..9553f65 100644 --- a/testMongoDB.ipynb +++ b/testMongoDB.ipynb @@ -1,5 +1,14 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from PyQt5.QtCore import (Qt, pyqtSignal)" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -1631,46 +1640,6 @@ "dataSet" ] }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(11, 3)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataSet.shotNum.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['atoms', 'background', 'dark', 'shotNum', 'OD']" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "list(dataSet.data_vars)" - ] - }, { "attachments": {}, "cell_type": "markdown",