@nodejs_ru

Страница 128 из 2748
Никита
10.08.2016
12:52:17
Секунда.

Не совсем.

Кстати, зависимость от debug не строгая, так что обновление дебага затронет express.

Так что да.

Google
Дмитрий d
10.08.2016
13:17:11
чат, вопрос... нужно по команде вызвать функцию около тысячи раз, функция обращается к стороннему сервису, и неизвестно как что по времени там будет. как лучше вызов этой функции и запись пришедших данных? Понимаю, что, скорее всего, нужно будет класть в бд (mongodb), а функции вызывать в цикле, верно ли это ?

Evgeny
10.08.2016
13:18:43
А в чем вопрос? Циклом отправь пачку через request-promise и жди.

Или надо ограничить кол-ао паралельных запрсов?

Или в чем вопрос?

Alex
10.08.2016
13:23:33
скорее всего вопрос в том как синхронно обработать 1000 асинхронных запросов. если так, то Promise.all(array).then(...)

Дмитрий d
10.08.2016
13:23:45
т.е. это считается нормальным, что будет цикл таких запросов?)

скорее всего вопрос в том как синхронно обработать 1000 асинхронных запросов. если так, то Promise.all(array).then(...)
спасибо, не знал про это возможность. но просто выяснял, нормально ли отправлять в цикле)

Alex
10.08.2016
13:26:11
я бы сделал так let requests = new Array(1000); requests.fill(requestFunctionThatReturnыPromise()) Promise.all(requests).then(…) но я бы подождал ответа от человека попрошаристей)

а тысяча - это число от балды?

Dmitry
10.08.2016
13:43:43
а результат каждого вызова важен? если важен - promise.all вроде как не прокатит. ибо при первой же ошибке - получится непонятное состояние

Никита
10.08.2016
13:54:47
Ой, секурбут всё.

Anton
10.08.2016
13:56:25
Ой, секурбут всё.
А поподробней?

Никита
10.08.2016
13:56:33
А поподробней?
https://twitter.com/musalbas/status/763131284042485761

Google
Никита
10.08.2016
13:57:49
https://rol.im/securegoldenkeyboot/

О, в твиттер трейлер кинца прислали.

https://twitter.com/laparisa/status/763423926957383680

Vladimir
10.08.2016
19:03:09
Добрый день. Ребят, как правильно передавать бинарные файлы в NodeJS? Есть какие нибудь устоявшиеся алгоритмы? Просто асинхронность в NodeJS добавляет многие сложности. К примеру мы не получаем ответ от клиента, получил он пакет или нет(хоть и TCP соединение), поэтому я не могу на стороне клиента нормальн собрать файл. Как быть?

Anton
10.08.2016
19:03:37
Вроде нет с этим проблем?

При TCP соединении вообще "пакетов" нет - они склеиваются при получении. Ну а порядок гарантирует OS

А метод передачи зависит исключительно от канала - обычный tcp/ip сокет, тунель какого либо рода и так далее. Но все эти вариант (спасибо POSIX!) так или иначе приводятся к файлу, над которым можно поднять stream.

Vladimir
10.08.2016
19:06:29
Клиент у меня на С++ написан

Там вообще ничего не гарантируется

Прихотят пакеты с обрывками

Anton
10.08.2016
19:06:54
TCP?

Vladimir
10.08.2016
19:07:03
Да

Юзаю либу net

Anton
10.08.2016
19:07:39
TCP гарантирует доставку, но не гарантирует что у тебя в момент "чтения" данных там будет целый пакет. Полпакета бывает редко, а вот полтора(или 35) - без проблем

TCP не разделяет пакеты. Это только UDP так имеет

Vladimir
10.08.2016
19:08:08
http://pastebin.com/hz1TfZJt Примерно так отправляю

Anton
10.08.2016
19:08:13
фактически на клиенте данные в начале аккумулируются до MTU(2kb) потом улетают.

Ага. JSON через TCP так не просунуть. Считай скобочки ручками, ищи по ним границы пакетов

Vladimir
10.08.2016
19:09:07
ммм

Anton
10.08.2016
19:09:35
websocket/protobuf этим не страдают

Google
Vladimir
10.08.2016
19:10:11
Да знаю, на socket.io все нормально запилил, теперь мне эту картинку нужна раздавать сервисам, а там только TCP/Unix sockets

websocket/protobuf этим не страдают

KlonD90
10.08.2016
19:11:04
а зачем это делать на nodejs? можно конечно но смысла мало

решал эту задачу

в итоге на go написал и не запарился

Vladimir
10.08.2016
19:11:47
К тимлиду вопросы. Сказал что всякие экзотические языки вроде Rust/Go юзать не будем

KlonD90
10.08.2016
19:11:58
ну типа самый простой способ

Vladimir
10.08.2016
19:12:23
Нам нужна асинхронность и хайлоад

KlonD90
10.08.2016
19:12:33
go > node.js

по обоим из этих параметров

Vladimir
10.08.2016
19:12:53
Асинхронность в go?

Vladimir
10.08.2016
19:13:03
А либку или еще что нить в виде пруфа

Anton
10.08.2016
19:13:09
Задача передачи данных вроде от языка не зависит

KlonD90
10.08.2016
19:13:11
ну там она скрытая он точно также сядет спать горутину

Anton
10.08.2016
19:13:48
Сделай по старинке - передавай терминатор между фреймами - - daemon.write(JSON.stringify(data)+MAGIC_SYMBOL). По нему и разбивай данные на пакеты.

Vladimir
10.08.2016
19:13:54
"Сядет спать" занимая собой ОЗУ?

KlonD90
10.08.2016
19:14:14
по старинке это по-моему размер передавать

Vladimir
10.08.2016
19:14:23
В том то и профит NodeJS

Нужно еще передавать позицию chunk в общем буфере

Google
Vladimir
10.08.2016
19:15:04
Сделай по старинке - передавай терминатор между фреймами - - daemon.write(JSON.stringify(data)+MAGIC_SYMBOL). По нему и разбивай данные на пакеты.

Чтоб потом правильно собрать все пакеты в единый файл

KlonD90
10.08.2016
19:16:36
лол у вас какая-то магия

у вас файл разбит на множестве серверов?

Vladimir
10.08.2016
19:17:07
нет

KlonD90
10.08.2016
19:18:36
файл быстрее читать последовательно с диска и позиция в чанке хз зачем вам если у вас все ровно один файл за раз и размер вы знаете

Vladimir
10.08.2016
19:21:34
Файл хранится в ОЗУ

Он там пролетом считай, пока приняли с клиента

Admin
ERROR: S client not available

Vladimir
10.08.2016
19:22:20
в го нет асинхронности

лучше вместо сепаратора использовать префикс с длиной

KlonD90
10.08.2016
19:23:31
в го нет асинхронности
в том смысле в котором это для чтения файла ровно такая же история что оно засыпает и ждет. можно также читать кусками или проксировать

Vladimir
10.08.2016
19:24:08
оно - это кто? тред засыпает, да

но в го нет работы с тредами

KlonD90
10.08.2016
19:24:39
зеленые треды спят - им нормально. они значительно дешевле чем в Java

Vladimir
10.08.2016
19:25:18
ну да

просто синхронность - это про другое

асинхронность, то есть

это когда колбэки и стек трейса нет)

то есть, ничего хорошего

Google
Anton
10.08.2016
19:26:36
Асинхронность в данном случае это асинхронные функции io операционки.

KlonD90
10.08.2016
19:27:24
pipe

в канал и спишь спокойно

Vladimir
10.08.2016
19:27:51
Проблема осталась. Мастера NodeJS, хотя бы теоретически раскажите как должно оно работать

Anton
10.08.2016
19:28:27
Берешь данные, кладешь в tmpFile. Создаешь сокет на сервер. Это тоже файл. Потом или pipe с одного на другой, либо вообще системный sendfile

Vladimir
10.08.2016
19:28:53
sendfile нет в ноде

если ты хочешь передавать что-то по tcp, то нужен формат фрейма для начала

либо нужно передавать файл и закрывать сокет сразу

Vladimir
10.08.2016
19:31:32
Закрывать сокет не могу, так как там соединение с сервисом

либо нужно передавать файл и закрывать сокет сразу

Можно по подробнее?

если ты хочешь передавать что-то по tcp, то нужен формат фрейма для начала

KlonD90
10.08.2016
19:32:25
тогда pipe не подойдет. создаешь buffer кладешь туда тупо данные форматированные. тут конечно вопрос вот куда ты пишешь эти данные там тоже Node.JS?

впрочем не сильно важно на самом деле

Vladimir
10.08.2016
19:32:46
Там С++ клиент

Vladimir
10.08.2016
19:32:46
ты передаешь свои "пакеты", но они могут быть порезаны как угодно. Нужно знать, где начало, где конец

Vladimir
10.08.2016
19:32:50
Чистый TCP сокет

KlonD90
10.08.2016
19:32:54
просто из этого баффера читаешь

свой бафер направляешь в сокет

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