WebSocket

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

WebSocket

Непрочитанное сообщение Olej » 15 июл 2019, 20:45

Делаю проект. Это Linux.
Заказчик хочет, чтобы GUI интерфейс, мнемосхема - реализовывался как WEB страница. В этом есть резон, если работать/управлять этим интерфейсом работник может (потенциально): со стационарного компьютера, ноутбука (по сети, удалённо), с Linux, Windows и все др. ... с планшета, смартфона и т.д. По крайней мере - в принципе.
Разработчики WEB морды, мнемосхемы в качестве интерфейса с бэкэндом предлагают WebSocket ... так им проще ... или это единственное, что они знают.
Бэкэнд - логика работы (это, укрупнённо, торговый автомат, киоск ... что-то подобное).
Бэкэнд - как вариант, может исполняться на C/C++ или Python, и должен он, естественно, реализовывать прежде всего сервер WebSocket.
Ну а вниз он должен по Modbus RTU управлять некоторым специализированным контроллером (проприетарным), который работает с датчиками и исполнительными механизмами.
Ну вот, кажется, и всё.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 15 июл 2019, 21:02

Olej писал(а): Бэкэнд - как вариант, может исполняться на C/C++ или Python, и должен он, естественно, реализовывать прежде всего сервер WebSocket.
Попался мне любопытный проект - Websocket. Сервер (Python) & Клиент (JavaScript)
Опубліковано 18.11.2018
После минимальных трансформаций (там всё было Windows и т.д.) можете попробовать ... у меня этот проектик заработал в моей LAN + между x86 стационаром и ARM Rapsberry Pi.
Сервер запускается на 192.168.1.99:9090 (у меня это Rapsberry Pi).
И нужно под конкретику отредактировать строки:
- ws-server.py

Код: Выделить всё

PORT=9090
HOST='192.168.1.99'
- ws-client.rp.html

Код: Выделить всё

var wsUri = "ws://192.168.1.99:9090/"
Запускаете ws-server.py:

Код: Выделить всё

olej@raspberrypi:~/WEBSOCKET $ 
python3 ws-server.py 
New client connected and was given id 1
Client(1) said: Hi everybody!
New client connected and was given id 2
Client(2) said: Hi everybody!
Client(2) said: 
Client(2) said: послано с RPi
Client(1) said: отвечено для RPi
Client(1) said: повторяем
Client(1) said: повторяем
Client(1) said: повторяем
...
А HTML файл(ы) открываете браузерами на разных хостах (хоть и на localhost)...
Вписываете сообщение + Send - и оно транслируется на все хосты.
Вложения
ws3.png
alislab.tgz
(4.53 КБ) 90 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 17 июл 2019, 01:22

Из пакетов имеющихся в репозитории:

Код: Выделить всё

olej@ACER:~$ aptitude search python3-websocket
p   python3-websocket                                                            - WebSocket client library - Python 3.x                                                  
p   python3-websockets                                                           - implementation of the WebSocket Protocol (RFC 6455)                                   
Устанавливаем:

Код: Выделить всё

olej@ACER:~$ aptitude show python3-websockets
...
olej@ACER:~$ aptitude show python3-websocket
...

Код: Выделить всё

olej@ACER:~$ pip3 list | grep websocket
websocket-client        0.53.0     
websocket-server        0.4        
websockets              7.0        
Больше всего меня интересуют (пока) GIT проектов:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websockets$ pip3 show websocket-client
Name: websocket-client
Version: 0.53.0
Summary: WebSocket client for Python. hybi13 is supported.
Home-page: https://github.com/websocket-client/websocket-client.git
Author: liris
Author-email: liris.pp@gmail.com
License: LGPL
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: 

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websockets$ pip3 show websocket-server
Name: websocket-server
Version: 0.4
Summary: A simple fully working websocket-server in Python with no external dependencies
Home-page: https://github.com/Pithikos/python-websocket-server
Author: Johan Hanssen Seferidis
Author-email: manossef@gmail.com
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: 
Required-by: 

Код: Выделить всё

olej@ACER:~$ pip3 show websockets
Name: websockets
Version: 7.0
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
Home-page: https://github.com/aaugustin/websockets
Author: Aymeric Augustin
Author-email: aymeric.augustin@m4x.org
License: BSD
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: 

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 17 июл 2019, 01:36

1.
Olej писал(а):

Код: Выделить всё

olej@ACER:~$ pip3 show websockets
Name: websockets
Version: 7.0
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
Home-page: https://github.com/aaugustin/websockets
Author: Aymeric Augustin
Author-email: aymeric.augustin@m4x.org
License: BSD
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: 
Пожалуй, самая обстоятельная реализация:
websockets is a library for building WebSocket servers and clients in Python with a focus on correctness and simplicity.

Built on top of asyncio, Python's standard asynchronous I/O framework, it provides an elegant coroutine-based API.
Отдельная страница очень обстоятельной документации: Getting started, с хорошими примерами кода.
Примеров настолько много и интересных, что приводить их поштучно нет сил, все проверенные примеры собраны в архив + там же файл .hist с тем как это запускалось.

Вот так выглядит интерактивный WEB-клиент (JavaScript):
ws.png
Вложения
websockets.tgz
(42.55 КБ) 88 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 17 июл 2019, 02:17

2.
Olej писал(а):

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websockets$ pip3 show websocket-client
Name: websocket-client
Version: 0.53.0
Summary: WebSocket client for Python. hybi13 is supported.
Home-page: https://github.com/websocket-client/websocket-client.git
Author: liris
Author-email: liris.pp@gmail.com
License: LGPL
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: 

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websockets$ pip3 show websocket-client
Name: websocket-client
Version: 0.53.0
Summary: WebSocket client for Python. hybi13 is supported.
Home-page: https://github.com/websocket-client/websocket-client.git
Author: liris
Author-email: liris.pp@gmail.com
License: LGPL
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: 
GIT: https://github.com/websocket-client/websocket-client
websocket-client module is WebSocket client for python. This provide the low level APIs for WebSocket. All APIs are the synchronous functions.
Я качал с GIT, потому как у них там есть тестовый клиент wsdump.py, который не ставится с Python пакета:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket$ tree websocket-client-master 
websocket-client-master
├── bin
│   └── wsdump.py
├── ChangeLog
├── compliance
│   ├── fuzzingserver.json
│   ├── README.md
│   └── test_fuzzingclient.py
├── examples
│   ├── echoapp_client.py
│   └── echo_client.py
├── LICENSE
├── MANIFEST.in
├── README.rst
├── setup.cfg
├── setup.py
├── upload.sh
└── websocket
    ├── _abnf.py
    ├── _app.py
    ├── _cookiejar.py
    ├── _core.py
    ├── _exceptions.py
    ├── _handshake.py
    ├── _http.py
    ├── __init__.py
    ├── _logging.py
    ├── _socket.py
    ├── _ssl_compat.py
    ├── tests
    │   ├── data
    │   │   ├── header01.txt
    │   │   └── header02.txt
    │   ├── __init__.py
    │   ├── test_cookiejar.py
    │   └── test_websocket.py
    ├── _url.py
    └── _utils.py

6 directories, 31 files

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 17 июл 2019, 02:19

Olej писал(а): Я качал с GIT, потому как у них там есть тестовый клиент wsdump.py, который не ставится с Python пакета:
У них есть возможность тестово подключаться к их WebSocket серверу в сети:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket/websocket-client-master/bin$ python3 wsdump.py ws://echo.websocket.org/
Press Ctrl+C to quit
> adsgadfsfghh
< adsgadfsfghh
> 11111111111116245634553467
< 11111111111116245634553467

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket/websocket-client-master/bin$ host echo.websocket.org
echo.websocket.org has address 174.129.224.73
Но это всё-таки, главным образом инструмент для построения клиентской стороны:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket$ python3 client1.py 
Sending 'Hello, World'...
Sent
Receiving...
Received 'Hello, World'
Вложения
websocket-client.tgz
(36.21 КБ) 79 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: WebSocket

Непрочитанное сообщение Olej » 17 июл 2019, 02:41

3.
Olej писал(а):

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websockets$ pip3 show websocket-server
Name: websocket-server
Version: 0.4
Summary: A simple fully working websocket-server in Python with no external dependencies
Home-page: https://github.com/Pithikos/python-websocket-server
Author: Johan Hanssen Seferidis
Author-email: manossef@gmail.com
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: 
Required-by: 

Код: Выделить всё

olej@ACER:~$ pip3 show websocket-server
Name: websocket-server
Version: 0.4
Summary: A simple fully working websocket-server in Python with no external dependencies
Home-page: https://github.com/Pithikos/python-websocket-server
Author: Johan Hanssen Seferidis
Author-email: manossef@gmail.com
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires: 
Required-by: 
GIT: https://github.com/Pithikos/python-websocket-server
сервер их здесь: https://github.com/Pithikos/python-webs ... /server.py
Установку всего пакета можно сделать так, средствами Python:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket-server$ pip install git+https://github.com/Pithikos/python-websocket-server
Collecting git+https://github.com/Pithikos/python-websocket-server
  Cloning https://github.com/Pithikos/python-websocket-server to /tmp/pip-req-build-g4bm23jm
  Running command git clone -q https://github.com/Pithikos/python-websocket-server /tmp/pip-req-build-g4bm23jm
Requirement already satisfied (use --upgrade to upgrade): websocket-server==0.4 from git+https://github.com/Pithikos/python-websocket-server in /usr/local/lib/python3.7/dist-packages
Building wheels for collected packages: websocket-server
  Building wheel for websocket-server (setup.py) ... done
  Stored in directory: /tmp/pip-ephem-wheel-cache-6ynaf29h/wheels/22/62/a6/6ddf480aca95352964b8cbd3b42ac4013d8768d97e67e4f775
Successfully built websocket-server
Сервер выполняется (у меня там чуть-чуть исправления):

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/WaterBiz/websocket/websocket-server$ python3 server.py 
Listening on port 9001 for clients..
New client connected and was given id 1
Client(1) said: 1111
Client(1) said: 2222222
Client(1) said: 333333
Client asked to close connection.
Client(1) disconnected
^CServer terminated.
Интерес здесь в том, что клиент - WEB-based, HTML-файл, который открываем в браузере:
ws.png
Вложения
websocket-server.tgz
(51.98 КБ) 76 скачиваний

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя