@nodejs_ru

Страница 937 из 2748
Aleksandr
29.06.2017
15:32:34
Сокетный коннект должен быть там, где рукопожались. Иначе он невалиден.
рукопожатие происходит после переключения протокола 101 кодом, это уже другой локейшен

/socket.io/1/?t=1498750249900 _2sK1RZS1Nku7vy0be6o:60:60:websocket где тут контекст который нельзя терять? я запросил согласование протоколов у любой ноды сокетио, они все одинаковые (что должно быть), я могу идти на любую и это сделает nginx на уровне http через ip-hash, если это все один клиент, ws это абстракция другого уровня

Vint
29.06.2017
15:42:19
Да более того, можно http вообще избежать, если сразу использовать транспорт websocket. Но ip-hash даже в этом случае нужен для sticky.

Aleksandr
29.06.2017
15:43:44
Да более того, можно http вообще избежать, если сразу использовать транспорт websocket. Но ip-hash даже в этом случае нужен для sticky.
да нет же, почитай RFC WebSockets, этот протокол инициируется через HTTP/1, и только. HTTP/2 не поддерживается, логика обмена данными после переключения через Upgrade меняется и соединение поддерживается постоянно за счет сердцебиения, при пересоздании его опять инициируется HTTP-запрос который через ip-hash отправляется туда же, а вот пакеты в рамках Websockets протокола уже не балансируются, потому что это атомарное соединение созданное через HTTP

Google
Aleksandr
29.06.2017
15:44:36
в терминах nginx, sticky это альтернативное название ip-hash, то был бесплатный модуль самописный, он уже не нужен

Vint
29.06.2017
15:45:53
Http нужен, если ты сразу хочешь старенький polling, а сервер и браузер соглашаются на websocket

Aleksandr
29.06.2017
15:47:08
Окей. А что использовать вместо?
ip-hash, он бесплатный, но для socket.io он в целом не обязательный, но можно и использовать. но это уровень абстракции HTTP, а не WS

Vint
29.06.2017
15:47:09
Про балансировку пакетов никто и не говорит. Балансировка только сокет-соединений между нодами.

ip-hash, он бесплатный, но для socket.io он в целом не обязательный, но можно и использовать. но это уровень абстракции HTTP, а не WS
Я тебя не понимаю, извини. У меня есть N нод (с сокетами и одинаковой логикой). Что ты предлагаешь для балансировки сокет-соединений между ними? В рамках nginx.

Aleksandr
29.06.2017
15:48:37
Http нужен, если ты сразу хочешь старенький polling, а сервер и браузер соглашаются на websocket
ты наверное про SSE? его кстати хотлоадер реактовый использует

Vint
29.06.2017
15:49:22
ты наверное про SSE? его кстати хотлоадер реактовый использует
Нет, я в целом, без завязки на реализацию фронта.

Aleksandr
29.06.2017
15:51:17
Я тебя не понимаю, извини. У меня есть N нод (с сокетами и одинаковой логикой). Что ты предлагаешь для балансировки сокет-соединений между ними? В рамках nginx.
вообще я предлагаю разобраться в подробностях протоколов, это будет полезно очень. потому что сокет-соединения невозможно балансировать, это соединения создающиеся в количестве одна штука на одну сессию, нужно балансировать http, потому что на ws никто не приходит, все приходят на http и его поднимают до ws

Aleksandr
29.06.2017
15:52:42
Спасибо. Но я выше уже привёл кейс с табами браузера. Разные tcp-соединения.
в этом случае ip-hash отправит все эти соединения на одну ноду

Vint
29.06.2017
15:53:43
в этом случае ip-hash отправит все эти соединения на одну ноду
Да ладно?) А о чём речь тогда во всю эту портянку выше? В итоге пришли к ip-hash...

Aleksandr
29.06.2017
15:54:30
Да ладно?) А о чём речь тогда во всю эту портянку выше? В итоге пришли к ip-hash...
к тому что ip-hash это про http (ну или udp или что-то из tcp не http), а не про ws, это разные протоколы и ws возможен только через http/1, это важно различать

Google
Vint
29.06.2017
15:56:45
к тому что ip-hash это про http (ну или udp или что-то из tcp не http), а не про ws, это разные протоколы и ws возможен только через http/1, это важно различать
Но мы за реальные вещи, а не теорию. В итоге сокет-соединение будет там же, куда пришёл http. За балансировку http отвечает nginx с ip-hash. А он (ip-hash) куцый по возможностям в бесплатной версии. Это то, о чём я говорил в самом начале, и то, на чём мы останавливаемся) Хех.

Aleksandr
29.06.2017
15:57:23
> А он (ip-hash) куцый по возможностям в бесплатной версии. чем это? у nginx нет ограниченных фич насколько я знаю, либо опция платная либо нет

более того кроме ip_hash можно использовать и кастомный хэш

Vint
29.06.2017
16:01:02
> А он (ip-hash) куцый по возможностям в бесплатной версии. чем это? у nginx нет ограниченных фич насколько я знаю, либо опция платная либо нет
Да, пардон, я может неправильно выразился изначально, чем сбил с толку. В N+ куча плюшек для балансировки помимо ip-hash



Aleksandr
29.06.2017
16:05:55
http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#ip_hash

в мануале сокетио как раз разумно и указывают на его использование, он работает как нужно, без проблем и ограничений

спасибо Игорю, все самое насущное и нужное они публикуют великодушно бесплатно, так что из балансировки только тонкости мелкие платные

Vint
29.06.2017
16:13:31
Без проблем и ограничений, но и без возможности тюнинга. Равномерность без развесовки.

Никита
29.06.2017
16:15:17
Так.

А кто ярном пользуется?

Vladimir
29.06.2017
16:16:54
Ну-ка, ну-ка

Что там?

Aleksandr
29.06.2017
16:17:32
а расширять можно через openresty, сервера вообще как-то непросто расширяются)

Никита
29.06.2017
16:21:43
Что там?
Да мне интересно, в курсе ли его пользователи что он митмит все запросы к нпм через свой сервер.

Vladimir
29.06.2017
16:22:03
Нет

Большинство его пользователей вообще вряд ли задумывается о таком

Никита
29.06.2017
16:24:25
Они ещё и через cloudflare идут.

Google
Никита
29.06.2017
16:25:15
Cloudflare это вообще задница для всего интернета, если честно.

Vladimir
29.06.2017
16:28:41
Да ладно

Дело не в cloudflare

Никита
29.06.2017
16:30:19
А в чём?

Vladimir
29.06.2017
16:30:56
В людях, которые его используют

Никита
29.06.2017
16:31:19
Он вполне успешно делает чтобы таких людей было больше.

https://www.theregister.co.uk/2017/06/27/100m_to_write_a_cloudflare_web_app/

Vladimir
29.06.2017
16:31:41
Они ведь добровольно это делают

Никита
29.06.2017
16:32:04
Ну и?

Это не отменяет того, что cloudflare зло.

cloudflare вполне успешно централизует интернет, и он в этом преуспел гораздо сильнее, чем рф или китай.

Vladimir
29.06.2017
16:33:06
Это означает лишь что в этом есть потребность

Никита
29.06.2017
16:35:55
На самом деле нет.

В большей части случаев он реально не нужен.

И его ставят просто потому что не осилили letsencrypt.

В итоге Cloudflare на текущий момент заMitMил 6% всех сайтов, 13% из топ-100к, и 16% из топ-10к. И работает в обход https, то есть свободно читает трафик.

Vladimir
29.06.2017
16:40:10
Ну это вроде бы всем очевидно

Ҫѐҏӗѫӑ
29.06.2017
17:02:53
ярн уже не ходит через свою проксю вроде

или снова ее включили?

так-то я давно писал, что его некоторые его юзеры сдают пакеты, которые юзают

Google
Ҫѐҏӗѫӑ
29.06.2017
17:04:37
но потом вроде бы они это отключили

пару месяцев назад

Aleksandr
29.06.2017
17:09:34
И его ставят просто потому что не осилили letsencrypt.
а как он связан с осиливанием lte? не могу понять

Sergey
29.06.2017
17:25:54
А есть международная группа по js, в телеграмме?

А то в эту иностранцам вход запрещен

Странно. Почему

Aleksandr
29.06.2017
17:27:24
Vladimir
29.06.2017
17:30:44
Admin
ERROR: S client not available

Sergey
29.06.2017
17:36:43
gitter там для этого используют
Спасибо, сообщу своему иностранному товарищу. А то он пытался стучатся в наши дж группы, и не удачно все, кроме pro.js.nub)

Aleksandr
29.06.2017
17:38:13
Спасибо, сообщу своему иностранному товарищу. А то он пытался стучатся в наши дж группы, и не удачно все, кроме pro.js.nub)
ну на западе другая культура, там на пещерном реддите часто толпы разрабов зарубаются по серьезным темам, кто-то в твиттере войны ведет, какой-то одной площадки нет на мой взгляд

Это как выглядит?
очень просто, отхуесосили (по другому и не назвать) тут грека бедного, прям с порога

Vladimir
29.06.2017
17:40:33
А, это может быть

OXXXRAa
29.06.2017
17:51:23
Ааа, помогите новичку, пожалуйста.

res.sendFile is not a function

Что делать?

Nikolay
29.06.2017
17:53:22
снимать штаны и бегать

где код, где стек, гадалки в отпуске

OXXXRAa

OXXXRAa
29.06.2017
17:54:36
const app = require('express')(); const http = require('http').Server(app); const fs = require('fs'); const io = require('socket.io')(http); app.get('/', function (res, req) { res.sendFile(__dirname + '/index.html'); }); io.on('connection', function (socket) { console.log('New connection'); }); http.listen(2000, function () { console.log('START'); });

Google
Nikolay
29.06.2017
17:55:37
express какой версии?

OXXXRAa
29.06.2017
17:56:02
Хз, как узнать

?

Alexander
29.06.2017
17:56:40
Чекни версию в node_modules/express/package.json

OXXXRAa
29.06.2017
17:57:13
Ок, сейчас

Alexander
29.06.2017
17:57:42
Я нашёл ошибку

Названия аргументов перепутал местами в роутах

Сначала идет req, а потом res

Поменяй и все будет ок

Nikolay
29.06.2017
17:58:41
)

OXXXRAa
29.06.2017
17:59:23
express@3.4.5

А, сейчас попробую.

Отлично, огромное вам спасибо:)

Учту, что аргументы нельзя путать местами.

Alexander
29.06.2017
18:01:10
?

Nikolay
29.06.2017
18:02:25
их помоему ни в одном языке нельзя путать

Yaroslav
29.06.2017
18:04:29
Nikolay
29.06.2017
18:04:50
1с порождение ада

Yaroslav
29.06.2017
18:05:14
^_^

Юрий
29.06.2017
18:07:28
их помоему ни в одном языке нельзя путать
В руби можно: def cool(one: 1, two: 2) puts one puts two end cool(two: 2, one: 1) # => выведет: # 1 # 2

Nikolay
29.06.2017
18:07:46
а это уже читерство

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