Я работал над новым проектом JavaScript, чтобы отобразить фронт для кучи данных, которые собираются в Python и транслируют на фронт. Что -то, что причиняет мне больших проблем, так это то, что Chrome Devtools не работают должным образом, пока этот поток открыт. Например, если я выставляю вкладку «Источники», источники не отображаются. Если я развлекуте вкладку сети, там нет никаких соединений. выскакивает. Точно так же вкладка «Сеть» ничего не показывает, пока поток открыт. Мало того, что он не показывает работающий поток (который, как я знаю, открыт, потому что обновления отображаются на странице), но даже не показывают нагрузку Localhost: 8000/. Убивание бэкэнда заставляет вкладку «Сеть» отображать неудачную нагрузку favicon.ico и все повторные поиски потока, но не начальную нагрузку /ни начальный запуск потока. < /P>
Я снял это до очень простого примера резо. Обратите внимание, что выделение синтаксиса на Stackoverflow вводит в заблуждение. Это очень смущено сочетанием JavaScript и Python. < /P>
#!/usr/bin/env python3
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from threading import Thread
import time
from urllib.parse import urlparse, parse_qs
index = '''
devtools lockup demo
No data received yet.
/*TODO: this doesn't really need to be a class.*/
class DataRelay {
constructor() {
const stream_url = '/stream/';
this.event_source = new EventSource(stream_url);
this.event_source.onmessage = (event) => {
document.getElementById('counter').textContent = event.data;
};
this.event_source.onerror = (error) => {
console.error('event_source.onerror:', error);
};
console.log('data stream handler is set up');
}
}
let data_relay = new DataRelay();
'''
def encode_as_wire_message(data):
# The "data: " preamble, the "\n\n" terminator, and the utf8 encoding are all
# mandatory for streams.
return bytes('data: ' + data + '\n\n', 'utf8')
#TODO: Get this constant in the class
class RequestHandler(BaseHTTPRequestHandler):
def add_misc_headers(self, content_type):
self.send_header('Content-type', content_type)
self.send_header('Cache-Control', 'no-cache')
self.send_header('Connection', 'keep-alive')
self.send_header('Access-Control-Allow-Credentials', 'true')
self.send_header('Access-Control-Allow-Origin', '*')
def serve_index(self):
self.send_response(200)
self.add_misc_headers('text/html')
self.end_headers()
self.wfile.write(bytes(index, 'utf8'))
def serve_stream(self):
self.send_response(200)
self.add_misc_headers('text/event-stream')
self.end_headers()
print('Beginning to serve stream...')
for x in range(1000000):
message = encode_as_wire_message(str(x))
print(message)
self.wfile.write(message)
self.wfile.flush()
time.sleep(1.0)
def do_GET(self):
parsed_url = urlparse(self.path)
if parsed_url.path == '/':
self.serve_index()
elif parsed_url.path == '/stream/':
self.serve_stream()
def run(server_class=ThreadingHTTPServer, handler_class=RequestHandler):
server_address = ('', 8000) # serve on all interfaces, port 8000
httpd = server_class(server_address, handler_class)
print('starting httpd... Open a connection to http://localhost:8000')
httpd.serve_forever()
run()
Подробнее здесь: https://stackoverflow.com/questions/794 ... aks-chrome
В JavaScript с HTML, открытие Eventource для сервера разрывает источники и сетевые вкладки Chrome в Devtools? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
JavaScript: открытие новой вкладки в мобильной сети (Android Chrome) [Duplicate]
Anonymous » » в форуме Html - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
C# + Selenium + Chrome DevTools Protocol: как захватывать трафик с новой вкладки
Anonymous » » в форуме C# - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-