170 похожих чатов

Здравствуйте, есть ли смысл в переводе приложения на websocket вместо

http?

40 ответов

22 просмотра

У тебя есть реалтайм данные? ) котировки?

Dmitry-Danilov Автор вопроса

только чаты в этом плане) но в целом ведь сокеты должны дать более приятное взаимодействие за счет скорости, только смущает отсутствие нормального горизонтального масштабирования. думаете нет смысла?

Нет. При хорошем интернете http скорости хватит, а для UX достаточно будет "ощущения" скорости. При плохом интернете ws всё также надо будет переподключать

А в чем прирост скорости по сравнению с обычным http запросом?

Экономия на установке соединения)

keep alive?

Такое же масштабирование как в http - поднял несколько серверов

А чем это будет лучше sse или ws?

Нет http заголовок Можно слать бинарные данные

Ws балансируется хуже

Не совсем то же. в http запрос-ответ, и можно один запрос в один сервер, второй в другой, а запросы обычно не связаны друг с другом. С WS чаще нужно общее состояние и sticky sessions

А в http бинарники не послать?

Dmitry-Danilov Автор вопроса

Неправильно выразился, имел в виду микросервисы, не очень удобно. Плюс по архитектуре мне не очень нравятся возможности

Dmitry-Danilov Автор вопроса

Тоже справедливо

В http у тебя сессия - такое же общее состояние

Обычно не шлют

Шлют. Картинки ж не в base64 приходят)

Я не про картинки а про данные

Но их тоже шлют. И идут они бинарно, а не текстом. Потому что http не имеет ограничений на тело. Тот же grpc шлёт бинарники, на сколько я помню

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

Экономия на трафике, на сериализации, "обфускация" :D

ещё есть всякие protobuf, thrift

Сэкономить на трафике можно и обычным gzip

Это другой аспект

если есть ожидаемые данные, то бинарные данные в выигрыше, только схему данных на фронте и беке нужно иметь)

тоесть ты можешь условные свойства сжать до каких то обозначений и их значения ещё сжать

А gzip на что?

камон я тебе обяснил

Давайте сначала, что вы под бинарными понимаете?

я ничего не понимаю в етом, я просто пишу тебе абстрактно thrift например шлешь данные структурами, которые парсятся по схеме на беке/фронте благодаря этому можешь отбросить в постдате те же самые property в json потому что у тебя есть схема, и по ней можешь восстановить отброшеннве проперти хз, мб это сериализация называется

очень абстрактно))

Отправка последовательностью байт в некоторой схеме, которые понимает получатель. JSON, XML и тп - текстовый формат. Это отправка текста в некоторой текстовой кодировке (UTF-8 и тп). Текста в некотором формате, который умеет потом десериализовываться в данные. И он сначала будет парситься, как текст, а не как просто последовательность чисел. Простые отличия, число "2000000000" текстом - это 10 байт (на 10 символов), а бинарно это число на 4 байта. Аналогично, в тексте тратится объём на имена свойств, на синтаксис, на всё то, что делает данные читаемыми для человека. В более сложных случаях бинарный формат лишён ограничений, которые дают популярные текстовые. Например, может позволить иметь явные ссылки, или типы данных, которых нет в формате сериализации. Конечно, это уже зависит от формата конкретного. Но текстовые используют лишь несколько конкретных - json, xml.

Спасибо, но как это в контексте браузера? Предлагаете thrift прямо клиенту кидать?

Для использования этого сайта, пожалуйста установите Apache Thrift Deserializer for Chrome

Я не знаком с thrift

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

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

Перечитайте тред

Grpc на каждое сообщение новый запрос шлёт?

Я не знаю, как он в вебе работает( У них недавно ещё вроде обновление было

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта