Я работал над новым проектом 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
1739650112
Anonymous
Я работал над новым проектом 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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79442177/in-html-embedded-javascript-opening-an-eventsource-to-the-server-breaks-chrome[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия