Loyd
Что значит не нужно?
Anonymous
Все можно, но просто это не НУЖНО
Владимир. Я не ставлю под сомнение твою квалификацию и авторитет. Но "не нужно" — это просто мнение. Я хочу в конкретном вопросе разобраться. Я потом сам решу, нужно это мне или нет. =)
Vladimir
не нужно делать rpc поверх вебсокетов, когда можно сделать поверх http
Paul
Что значит не нужно-то?)
Vladimir
это оверинжинирг в чистом виде
Vladimir
это не решает задач
Loyd
Ну да, подумаешь будешь 500 байт вместо 50 слать, когда тебе пару байтиков отослать и пару байтиков получить
Loyd
ws создавались именно для этой проблемы.
Vladimir
они все таки для pub sub и всякого такого
Anonymous
Я ещё раз повторяю, мне не нужно конкретно RPC, ё-моё. Я просто привёл пример известной мне абстракции над HTTP. Я хочу знать, существуют ли абстракции или соглашения над сокетами. =)))
Loyd
500 байт это я, конечно, лажанул. С куками меньше 3киб явно не получится.
Anonymous
они все таки для pub sub и всякого такого
Ну, это мне и нужно, если что. =)
Paul
Это отлично решает задачу: я на ноде трекаю пользователей которые подключены сейчас, вывожу по ним статистику, отпавляю им что надо, обновляю, нотифицирую. В админке это показываю Что не нужно в этом случае - это городить огород чтобы сделать тоже самое через http самому
Vladimir
Только сервер становится stateful
Vladimir
Усложняется проксирование
Vladimir
Ломается балансировка
Paul
Только сервер становится stateful
Ну и хорого, это может быть не весь сервер, а один микросервис, который торчит наружу
Paul
Да ничего не ломается
Paul
nginx прекрасно балансирует
Vladimir
выключаем сервер - все отключаются
Vladimir
включаем - ребалансировки нет, сервер пустой
Anonymous
Сервер может быть просто источником данных и ACL.
Loyd
Балансировать по сессиям надо
Loyd
А не по запросам
Vladimir
nginx балансирует сокеты, а нет запросы
Anonymous
Короче. Я так понимаю, ответ на мой вопрос — "нет, не слышали"?
Vladimir
Это приводит к неравномерности нагрузки, по карйней мере временной
Paul
500 байт это я, конечно, лажанул. С куками меньше 3киб явно не получится.
http://www.websocket.org/quantum.html Тут ресерч, сколько гигабайт сервер будет экономить на хедерах
Loyd
Короче. Я так понимаю, ответ на мой вопрос — "нет, не слышали"?
Ответ на твой вопрос: есть нормальные решения (например, dnode, если речь по rpc), но в большинстве случаев ws именно для голых данных, когда протокол ты сам прорабатываешь
Vladimir
в socket.io в принципе это есть
Anonymous
Только сервер становится stateful
Иногда это неизбежно, кстати. Например, в случае, когда сервер является посредником между клиентом и сущностью, которая сама имеет состояние, в силу своей естественной архитектуры (например, принтер — ему вообще пофиг, что твой сервер должен быть стейтлес).
Vladimir
это понятно, просто когда этого можно избежать - стоит этого избегать
Vladimir
я лично очень люблю stateful подход, но для нужна серьезная инфраструктура
Max
Объясните пожалуйста в двух словах отличие stateless от stateful
Roman
.. a TCP не гарантирует доставку сообщений …
Я вас опечалю, но сообщений в tcp нет
Loyd
Угу. И по сети оно тоже не пакетами, а стримом идёт. Ну-ну
Roman
Угу. И по сети оно тоже не пакетами, а стримом идёт. Ну-ну
Какое вам дело как оно в проводах? Пакетов в tcp нет и приложение работает с потоком байт для которого гарантирует очередность.
Loyd
Я ничего про провода не говорил
Roman
Если в в tcp запишите серию сообщений по 64 байта, то на той стороне прочитается как угодно: хоть все разом, хоть по 1.5 сообщения.
Vladimir
Ну пакеты в tcp есть, но с нижней стороны
Vladimir
Со стороны интграции с ip
Roman
Ну пакеты в tcp есть, но с нижней стороны
Приложению до них не дотянуться.
Vladimir
само собой, просто фраза tcp-пакет имеет смысл
Loyd
Не пойму о чём идёт разговор
Loyd
В стандарте есть слово пакет, есть дефиниция для него
Roman
Но тут речь про другое: вы в tcp сокет можете положить несколько сообщений, но на той стороне их могут не получить.
Loyd
Не могут
Anonymous
Я хочу стек, в котором я смогу использовать и CommonJS и AMD модули на клиенте. При этом, AMD модули могут быть на внешних ресурсах. Куда копать? Вебпак умеет только внутренние AMD-модули. К Browserify нужно прикручивать RequireJS (через глобал скоуп). Может быть, ещё что-то есть?
Loyd
При сильном везении могут получить испорченными, конечно. Но либо получают, либо сокет закроется по таймауту
Roman
Не могут
С чего бы вдруг? Запись в сокет не означает немедленную отправку.
Loyd
Я к этому не апеллировал, с чего Вы это взяли вообще?
Loyd
Я всё к > но на той стороне их могут не получить.
Vladimir
Конечно, могут не получить
Loyd
Ну тогда не получат больше ничего
Vladimir
да
Loyd
Ну и всё. Что сеть с концами оборвёться никто и не спорит.
Roman
Я всё к > но на той стороне их могут не получить.
Ок, смотри. Ты записал в сокет, в этот момент отвалился инет. Стек еще данные не послал.
Roman
Ну и всё. Что сеть с концами оборвёться никто и не спорит.
Дык твое приложение будет думать что данные ушли.
Roman
Ну и всё. Что сеть с концами оборвёться никто и не спорит.
Проблема в том, что тебе нужно подтверждение с той стороны что данные получены.
Anonymous
вебпак кажется умеет во все форматы
Да. Умеет. Всё круто, кроме одного — если захочешь тянуть модуль с CDN, напрыгаешься с бубном.
Loyd
В подавляющем большинстве случаев не нужно.
Loyd
Ну а когда нужно, там совсем другие проблемы вылазят
Roman
Vlad
так не тяни
модули скачивать с чужого сдн-а это совсем нехорошо
Loyd
Ну вот даже не знаю, как реагировать тут.
Loyd
Сначала обосрался с термином пакет, теперь пытаешься капитанить про обрыв связи... Фейспалм не себе случаем адресован?
Anonymous
Anonymous
И если это мой CDN?