В настоящее время у меня python3 socketserver.TCPServer
работает на моем Linux хост-компьютере. Теперь мне нужен поток данных, к которому будет подключаться клиент JS, и затем сервер сможет передавать ему новые данные для заполнения полей HTML. Я одолжил немного JS для обработки WebSocket, но у меня проблемы со стороной python3.
Когда я запускаю веб-клиент, мой класс HTTPAuthHandler просто обрабатывает мое входящее соединение с сокетом как запрос GET. Немного застрял в том, где отсюда до go. Моя цель - поддерживать соединение открытым и sh данные, когда это необходимо с сервера.
Как мне обрабатывать входящее соединение через сокет?
Python3 do_GET:
def do_GET(self):
"""Present frontpage with user authentication."""
auth_header = self.headers.get('Authorization', '').encode('ascii')
if auth_header is None:
self.do_authhead()
self.wfile.write(b"no auth header received")
elif auth_header == self.valid_header:
SimpleHTTPRequestHandler.do_GET(self)
else:
self.do_authhead()
self.wfile.write(auth_header)
self.wfile.write(b"not authenticated")
Javascript socketclient:
let socket = new WebSocket("ws://" + window.location.host + "/device-info");
socket.onopen = function(e) {
alert("[open] Connection established");
alert("Sending to server");
socket.send("My name is John");
};
socket.onmessage = function(event) {
alert(`[message] Data received from server: ${event.data}`);
};
socket.onclose = function(event) {
if (event.wasClean) {
alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
} else {
// e.g. server process killed or network down
// event.code is usually 1006 in this case
alert('[close] Connection died');
}
};
socket.onerror = function(error) {
alert(`[error] ${error.message}`);
};
Вывод:
192.168.0.199 - - [05/Aug/2020 16:53:28] code 404, message File not found
192.168.0.199 - - [05/Aug/2020 16:53:28] "GET /device-info HTTP/1.1" 404 -