powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Стратегия синхронизации данных между frontEnd и backEnd
25 сообщений из 66, страница 2 из 3
Стратегия синхронизации данных между frontEnd и backEnd
    #40003175
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Если взять HTTP прокси который не знает про вебсокет
Ему и не надо
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003176
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
WebSocket - протокол поверх TCP.
Читайте спецификацию: https://tools.ietf.org/html/rfc6455
Странно вы как-то её читаете
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
1.2.  Protocol Overview

   _This section is non-normative._

   The protocol has two parts: a handshake and the data transfer.

   The handshake from the client looks as follows:

        GET /chat HTTP/1.1
        Host: server.example.com
        Upgrade: websocket
        Connection: Upgrade
        Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
        Origin:  http://example.com 
        Sec-WebSocket-Protocol: chat, superchat
        Sec-WebSocket-Version: 13

   The handshake from the server looks as follows:

        HTTP/1.1 101 Switching Protocols
        Upgrade: websocket
        Connection: Upgrade
        Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
        Sec-WebSocket-Protocol: chat
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003193
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Поэтому разбудите меня когда JS через этот ваш уэб-сокет сможет подключаться прямо к серверу IRC, не требуя чтобы кто-то для него работал как прокси.
про wss слышал
Anatoly Moskovsky
он даже уже не текстовый, а бинарный.
всё что передаётся - бинарное. отличается только тем как это воспринимается на приемной стороне.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003197
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Basil A. Sidorov
Метод POST позволяет отправить и получить бинарные данные. Это "100% не HTTP"?

В вебсокете нет HTTP заголовков, нет ни POST ни GET. Он в принципе не может быть оберткой над HTTP.
Если взять HTTP прокси который не знает про вебсокет, то он не сможет ретранслировать вебсокет - он вернет ошибку клиенту на первом же байте данных после переключения протокола.
Что еще не понятно-то?
спокойно проходит, главное что бы прокси поддерживал keep-alive и часто не срывался
https-прокси не может без злого умысла анализировать трафик, он даже запрос не видит, только адресс сайта

по сути дыра в безопасности, от чего уходили с вводом http, к тому и вернулись

PS: http-заголовок есть
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003223
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

The Upgrade header field is intended to provide a simple mechanism
for transition from HTTP/1.1 to some other, incompatible protocol.
Т.е. в в вашей ссылке прямо написано что это уже будет не HTTP ))
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003227
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
спокойно проходит, главное что бы прокси поддерживал keep-alive и часто не срывался

Это вы с туннелированием через CONNECT путаете.
Там кстати тоже уже речь про HTTP не идет после создания туннеля.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003250
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
skyANA
WebSocket - протокол поверх TCP.
Читайте спецификацию: https://tools.ietf.org/html/rfc6455
Странно вы как-то её читаете
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
1.2.  Protocol Overview

   _This section is non-normative._

   The protocol has two parts: a handshake and the data transfer.

   The handshake from the client looks as follows:

        GET /chat HTTP/1.1
        Host: server.example.com
        Upgrade: websocket
        Connection: Upgrade
        Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
        Origin:  http://example.com 
        Sec-WebSocket-Protocol: chat, superchat
        Sec-WebSocket-Version: 13

   The handshake from the server looks as follows:

        HTTP/1.1 101 Switching Protocols
        Upgrade: websocket
        Connection: Upgrade
        Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
        Sec-WebSocket-Protocol: chat

Я то как раз её нормально читаю, а не только до места, где про handshake.

И даже досюда дочитав, можно было обратить внимание на "The protocol has two parts: a handshake and the data transfer."
И подумать о том, что же там за вторая часть.

И дойти таки до этого:
The WebSocket Protocol is an independent TCP-based protocol.
Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade request.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003262
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Т.е. в в вашей ссылке прямо написано что это уже будет не HTTP ))
Вы бы до конца дочитывали: "It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP with a higher major version number , even though the current request has been made using HTTP/1.1". У HTTP уже давно можно выкинуть HypterText и оставить только Transport.
Это всё, безусловно не нарушает формальную правильность вашего утверждения, но и смысла в нём не появляется.

Ну а WebSocket (с третьей попытки) сделали лентяи, которым лень подумать и понять, что WS-кадрирование можно делать разными способами и что разработка нового протокола - не самый лучший вариант.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003268
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Я то как раз её нормально читаю, а не только до места, где про handshake.
Тогда у вас проблемы с логикой.
Если описывается инициализация протокола поверх HTTP, то это ещё не означает, что описываемый протокол будет работать поверх TCP.
HTTP, если что, требует только "clear 8-bit channel". Over-TCP, Over-Serial или over-Ethernet - дело десятое.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003281
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
skyANA
Я то как раз её нормально читаю, а не только до места, где про handshake.
Тогда у вас проблемы с логикой.
Если описывается инициализация протокола поверх HTTP, то это ещё не означает, что описываемый протокол будет работать поверх TCP.
HTTP, если что, требует только "clear 8-bit channel". Over-TCP, Over-Serial или over-Ethernet - дело десятое.

Все начинается так же как в обычном HTTP-запросе.
Браузер подключается по протоколу TCP на 80 порт сервера и дает немного необычный GET-запрос:

Код: sql
1.
2.
3.
4.
5.
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: site.com
Origin: http://site.com



Если сервер поддерживает ВебСокеты, то он отвечает таким образом:

Код: sql
1.
2.
3.
4.
5.
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://site.com
WebSocket-Location: ws://site.com/demo



Если браузер это устраивает, то он просто оставляет TCP-соединение открытым .
Все - «рукопожатие» совершено, канал обмена данными готов.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003299
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Это всё, безусловно не нарушает формальную правильность вашего утверждения, но и смысла в нём не появляется.

Смысла там намного больше чем в утверждении что вебсокет работает поверх хттп, которое вы сами же и опровергли ))
Basil A. Sidorov
Ну а WebSocket (с третьей попытки) сделали лентяи, которым лень подумать и понять, что WS-кадрирование можно делать разными способами и что разработка нового протокола - не самый лучший вариант.

В HTTP невозможно реализовать p2p протокол такой как вебсокет.
Подумайте сами почему. Уверен, что вы найдете ответ в спеке, как и на предыдущий вопрос ))
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003339
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
kealon(Ruslan)
спокойно проходит, главное что бы прокси поддерживал keep-alive и часто не срывался

Это вы с туннелированием через CONNECT путаете.
Там кстати тоже уже речь про HTTP не идет после создания туннеля.
ничего не путаю
htеps-прокси НЕ СЛЕДИТ ЗА ТЕМ КТО И ЧТО ОТПРАВЛЯЕТ, он просто поддерживает переброску
если ему сказали что нужно держать соедение как можно возможно дольше, он это и будет делать

метод Connect к этому отношения не имеет
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003360
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
htеps-прокси НЕ СЛЕДИТ ЗА ТЕМ КТО И ЧТО ОТПРАВЛЯЕТ, он просто поддерживает переброску
если ему сказали что нужно держать соедение как можно возможно дольше, он это и будет делать

Удачи, вам еще многое предстоит открыть ))
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003386
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

вы нормально для себя поделите, о чём вы говорите
прокси ничего не реализует кроме авторизации и проксирования

обычный древний IIS который, с отключенным CONNECT, свободно тунелит WebSocket вообще о нём ничего не зная - это 7 лет назад я спокойно делал

а в веб-сервер естественно надо функционал такой добавлять, сам он не появится
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003399
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
обычный древний IIS который, с отключенным CONNECT, свободно тунелит WebSocket вообще о нём ничего не зная - это 7 лет назад я спокойно делал

Потому что большинство прокси умеют переключаться с HTTP на двусторонний бинарный релей при нарушении протокола.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003421
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Браузер подключается по протоколу TCP на 80 порт сервера и дает немного необычный GET-запрос:

Что в нём необычного? HTTP спецификация ЕМНИП допускает в запросе (и ответе) заголовки, не описанные в ней, а сам GET там абсолютно нормальный.

Вся "поддержка" от браузера состоит в том, что он передаёт JS принятые данные не буферизуя и не пытаясь их парсить.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003430
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Вся "поддержка" от браузера состоит в том, что он передаёт JS принятые данные не буферизуя и не пытаясь их парсить.
этого мало?
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003444
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
kealon(Ruslan)
обычный древний IIS который, с отключенным CONNECT, свободно тунелит WebSocket вообще о нём ничего не зная - это 7 лет назад я спокойно делал

Потому что большинство прокси умеют переключаться с HTTP на двусторонний бинарный релей при нарушении протокола.
простой вопрос для HTTPS: какого протокола? TLS? как же он должен это сделать?
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003473
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
простой вопрос для HTTPS: какого протокола? TLS? как же он должен это сделать?

HTTP.

Тут два варианта (если отбросить CONNECT).
1 Прозрачный прокси, когда трафик перехватывается на пути к серверу. В этом случае после установки соединения прокси ждет HTTP запрос (по plain TCP), а клиент присылает TLS handshake, прокси видит что это не HTTP и просто устанавливает двусторонний релей по plain TCP между сервером и клиентом. Содержимое соединения ему недоступно. (С CONNECT то же самое происходит явной командой клиента.)

2 Обратный прокси, когда клиент соединяется прямо к прокси, а прокси имеет TLS сертификат сервера и обрабатывает запросы клиента от имени сервера. В этом случае клиент и прокси устанавливают TLS соединение. Прокси при этом читает и выполняет индивидуальные сообщения HTTP over TLS. В случае вебсокета клиент выполняет Upgrade в вебсокет, и если прокси не в курсе про вебсокет то после ответа сервера 101 клиент присылает бинарные данные протокола вебсокет, и в этот момент прокси переключается на двусторонний релей по TLS между сервером и клиентом.

В обоих случаях прокси переключается на релей когда обнаруживает что это не протокол HTTP. Просто в первом случае прокси не может видеть трафик, а во втором может.

Так что к моменту когда начинаются данные вебсокета, текущий протокол уже не HTTP.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003484
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
этого мало?

Мало, конечно. Для того чтобы написать уже упомянутый IRC клиент на JS в браузере - тот вообще не должен никак ограничивать соединение и поток, предоставляя тот же интерфейс и возможности, что и BSD сокеты. Вот тогда-то меня и разбудите.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003496
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
упомянутый IRC клиент на JS в браузере -
это что-то наподобие неуловимого Джо?
ещё в самом начале появления ws было известно, что через старое ПО он не везде проходит, но wss ходит везде.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003500
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

1. ну и что, это не базовая функция прокси в случае https? с чего ему её блокировать?
2. а вот это уже называется "атака посередине" и к нормальному функционированию прокси отношения не имеет
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003504
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
2. а вот это уже называется "атака посередине" и к нормальному функционированию прокси отношения не имеет

В режиме обратного прокси с TLS работает весь интернет в наше время.
Слово CDN надеюсь вам знакомо?
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003508
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
1. ну и что, это не базовая функция прокси в случае https? с чего ему её блокировать?

Да пожалуйста не блокируйте. Только не нужно это называть HTTP. Потому что там его нет.
...
Рейтинг: 0 / 0
Стратегия синхронизации данных между frontEnd и backEnd
    #40003522
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
. Вот тогда-то меня и разбудите.
ради чего? чтоб использовать :
По стандарту, сообщение IRC не может иметь длину больше 510 байтов, из которых собственно на текст приходится никак не больше 499 (по нереалистично завышенной оценке).

Следовательно, отправить в одном сообщении больше 249 русских букв оказывается невозможно.

Ограничение размера сообщений вызывает ещё одну неприятность: при попытке превысить установленный предел сервер обрезает сообщения.

Если срез пройдёт посередине русской буквы (то есть будет передан первый её байт, но отброшен второй), то получившаяся последовательность байтов перестанет, с точки зрения UTF-8, быть правильной строкой.
кода в ws нет ограничения ни в длине , ни в типе передаваемых данных.
так что спи - и не лезь в современную реальность.
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Стратегия синхронизации данных между frontEnd и backEnd
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]