@nodejs_ru

Страница 218 из 2748
Paul
20.09.2016
20:31:12
Соб-но, в играх потому udp и используют чаще всего

Котяй Негодяй
20.09.2016
20:31:30
Ну, в общем, да.

Так. А с вебсокетами, всё-таки, кто-нибудь здесь работал? =)

Paul
20.09.2016
20:33:39
Все, наверное, работали.

Google
Vladimir
20.09.2016
20:33:47
> @bigslycat Короче, перебои со связью неактуальны. ахахаха

Мерлин
20.09.2016
20:33:59
Но как раз в играх стейт есть и на клиенте и на сервере, и udp там применяется из-за скорости и низкой ценности каждого кадра синхронизации состояний Если речь идёт скажем о сообщениях на форуме, то udp применять нельзя

Vladimir
20.09.2016
20:34:13
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Котяй Негодяй
20.09.2016
20:34:46
> @bigslycat Короче, перебои со связью неактуальны. ахахаха
Не, ну а какие перебои могут быть на локалхосте?

Paul
20.09.2016
20:35:18
Да на локалхосте никаких.

Котяй Негодяй
20.09.2016
20:35:35
Ну и я о том ж.

Vladimir
20.09.2016
20:35:40
Ну про это никто не говорил

Paul
20.09.2016
20:35:43
Перебои сами по себе не страшны. Страшно, если контрольная сумма сойдётся при испорченных данных

Vladimir
20.09.2016
20:35:53
Верно

Страшно применить апдейты не в том порядке

В ситуации когда локалхост, неважна надежность, порядок и т д - да делай что хочешь, как хочешь

Vladimir
20.09.2016
20:37:29
Добрый день. Довольно такой дуратский вопрос, но как получить размер файла из POST запроса? Отправляю multipart. Получаю content_type, но размер там немного больше чем размер файла. Поэтому и хочется узнать как получить именно размер файла

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

Google
Paul
20.09.2016
20:37:32
Страшно применить апдейты не в том порядке
Ну, тут как раз сильно маловероятно испорченность. Это прям повести должно конкретно, чтобы у двух пакетов симметрично биты поменялись.

И при этом контрольные суммы сошлись бы

биты порядка*

Vladimir
20.09.2016
20:38:01
Имеется в вижу не испорченность пакетов, а испорченость результата, расчитаного на клиенте

Котяй Негодяй
20.09.2016
20:38:15
Так вот, мой вопрос, с которого всё это началось, заключался в следующем: вот для HTTP придумали REST, RPC, SOAP... Потом JSON-API, RPC-JSON и т.д. И я хотел узнать, не придумали ли что-нибуть такое для вебсокетов? Не хочу писать велик. Особенно, не имея опыта. Хочу ознакомиться с соглашениями, если таковые уже есть.

Vladimir
20.09.2016
20:38:32
Так задача какая?

Paul
20.09.2016
20:38:36
А что ты хочешь-то?

Vladimir
20.09.2016
20:38:45
RPC по вебсокетам? это бессмысленно

Paul
20.09.2016
20:38:56
Ну почему-же.

Vladimir
20.09.2016
20:39:11
Ну почему-же.
Есть теоритеский профит от мультиплексирования

Но и только

Paul
20.09.2016
20:39:28
Что в данном контексте мультиплексирование?

Я знаю только одно мультиплексирование — select/poll.

Vladimir
20.09.2016
20:39:45
Логических каналов на tcp сокеты

Paul
20.09.2016
20:39:51
Аа

Vladimir
20.09.2016
20:39:59
т е нет head of line блокировки

Котяй Негодяй
20.09.2016
20:40:12
Ну, что такое RPC? Это определённое соглашение, если в общем? Протокол над HTTP? Верно? Возможно, что-то более высокоуровневое есть и над веб-сокетами.

Vladimir
20.09.2016
20:40:30
RPC это когда ты посылаешь запрос и получаешь ответ

Котяй Негодяй
20.09.2016
20:40:38
Не обязательно это похоже на перечисленные мною вещи. Скорей всего, не похоже, вовсе.

Paul
20.09.2016
20:40:44
Использую websocket'ы в продакшене уже 5 лет на разных проектах. Написаны обертки на все случаи жизни. Работает как часы, плюс онлайн обновления, нотификации и тд Ничего не течет. Возвращаться на http не хочется совсем

Google
Котяй Негодяй
20.09.2016
20:40:54
Хотя, я слышал, что есть рест овер сокетс.

Vladimir
20.09.2016
20:41:10
Все можно, но просто это не НУЖНО

Можно и через webrtc сделать

Paul
20.09.2016
20:42:08
Что значит не нужно?

Котяй Негодяй
20.09.2016
20:42:35
Все можно, но просто это не НУЖНО
Владимир. Я не ставлю под сомнение твою квалификацию и авторитет. Но "не нужно" — это просто мнение. Я хочу в конкретном вопросе разобраться. Я потом сам решу, нужно это мне или нет. =)

Vladimir
20.09.2016
20:42:40
не нужно делать rpc поверх вебсокетов, когда можно сделать поверх http

Paul
20.09.2016
20:42:53
Что значит не нужно-то?)

Vladimir
20.09.2016
20:42:57
это оверинжинирг в чистом виде

это не решает задач

Paul
20.09.2016
20:43:17
Ну да, подумаешь будешь 500 байт вместо 50 слать, когда тебе пару байтиков отослать и пару байтиков получить

ws создавались именно для этой проблемы.

Vladimir
20.09.2016
20:44:07
они все таки для pub sub и всякого такого

Котяй Негодяй
20.09.2016
20:44:08
Я ещё раз повторяю, мне не нужно конкретно RPC, ё-моё. Я просто привёл пример известной мне абстракции над HTTP. Я хочу знать, существуют ли абстракции или соглашения над сокетами. =)))

Paul
20.09.2016
20:44:26
500 байт это я, конечно, лажанул. С куками меньше 3киб явно не получится.

Котяй Негодяй
20.09.2016
20:44:30
они все таки для pub sub и всякого такого
Ну, это мне и нужно, если что. =)

Paul
20.09.2016
20:44:50
Это отлично решает задачу: я на ноде трекаю пользователей которые подключены сейчас, вывожу по ним статистику, отпавляю им что надо, обновляю, нотифицирую. В админке это показываю Что не нужно в этом случае - это городить огород чтобы сделать тоже самое через http самому

Vladimir
20.09.2016
20:45:17
Только сервер становится stateful

Усложняется проксирование

Котяй Негодяй
20.09.2016
20:45:51
Vladimir
20.09.2016
20:45:59
Ломается балансировка

Google
Paul
20.09.2016
20:46:02
Только сервер становится stateful
Ну и хорого, это может быть не весь сервер, а один микросервис, который торчит наружу

Да ничего не ломается

nginx прекрасно балансирует

Vladimir
20.09.2016
20:46:20
выключаем сервер - все отключаются

включаем - ребалансировки нет, сервер пустой

Котяй Негодяй
20.09.2016
20:46:37
Сервер может быть просто источником данных и ACL.

Paul
20.09.2016
20:47:01
Балансировать по сессиям надо

А не по запросам

Vladimir
20.09.2016
20:47:07
nginx балансирует сокеты, а нет запросы

Котяй Негодяй
20.09.2016
20:47:31
Короче. Я так понимаю, ответ на мой вопрос — "нет, не слышали"?

Admin
ERROR: S client not available

Vladimir
20.09.2016
20:47:34
Это приводит к неравномерности нагрузки, по карйней мере временной

Paul
20.09.2016
20:48:05
500 байт это я, конечно, лажанул. С куками меньше 3киб явно не получится.
http://www.websocket.org/quantum.html Тут ресерч, сколько гигабайт сервер будет экономить на хедерах

Paul
20.09.2016
20:48:32
Короче. Я так понимаю, ответ на мой вопрос — "нет, не слышали"?
Ответ на твой вопрос: есть нормальные решения (например, dnode, если речь по rpc), но в большинстве случаев ws именно для голых данных, когда протокол ты сам прорабатываешь

Vladimir
20.09.2016
20:48:51
в socket.io в принципе это есть

Котяй Негодяй
20.09.2016
20:50:23
Только сервер становится stateful
Иногда это неизбежно, кстати. Например, в случае, когда сервер является посредником между клиентом и сущностью, которая сама имеет состояние, в силу своей естественной архитектуры (например, принтер — ему вообще пофиг, что твой сервер должен быть стейтлес).

Vladimir
20.09.2016
20:50:51
это понятно, просто когда этого можно избежать - стоит этого избегать

Google
Vladimir
20.09.2016
20:51:42
я лично очень люблю stateful подход, но для нужна серьезная инфраструктура

Max
20.09.2016
21:12:29
Объясните пожалуйста в двух словах отличие stateless от stateful

Paul
20.09.2016
21:21:02
Угу. И по сети оно тоже не пакетами, а стримом идёт. Ну-ну

Roman
20.09.2016
21:22:16
Угу. И по сети оно тоже не пакетами, а стримом идёт. Ну-ну
Какое вам дело как оно в проводах? Пакетов в tcp нет и приложение работает с потоком байт для которого гарантирует очередность.

Paul
20.09.2016
21:24:00
Я ничего про провода не говорил

Roman
20.09.2016
21:24:12
Если в в tcp запишите серию сообщений по 64 байта, то на той стороне прочитается как угодно: хоть все разом, хоть по 1.5 сообщения.

Vladimir
20.09.2016
21:24:38
Ну пакеты в tcp есть, но с нижней стороны

Со стороны интграции с ip

Roman
20.09.2016
21:25:03
Ну пакеты в tcp есть, но с нижней стороны
Приложению до них не дотянуться.

Vladimir
20.09.2016
21:25:26
само собой, просто фраза tcp-пакет имеет смысл

Paul
20.09.2016
21:26:11
Не пойму о чём идёт разговор

В стандарте есть слово пакет, есть дефиниция для него

Roman
20.09.2016
21:26:58
Но тут речь про другое: вы в tcp сокет можете положить несколько сообщений, но на той стороне их могут не получить.

Paul
20.09.2016
21:27:20
Не могут

Котяй Негодяй
20.09.2016
21:27:21
Я хочу стек, в котором я смогу использовать и CommonJS и AMD модули на клиенте. При этом, AMD модули могут быть на внешних ресурсах. Куда копать? Вебпак умеет только внутренние AMD-модули. К Browserify нужно прикручивать RequireJS (через глобал скоуп). Может быть, ещё что-то есть?

Paul
20.09.2016
21:27:58
При сильном везении могут получить испорченными, конечно. Но либо получают, либо сокет закроется по таймауту

Roman
20.09.2016
21:28:04
Не могут
С чего бы вдруг? Запись в сокет не означает немедленную отправку.

Страница 218 из 2748