
Павел
27.03.2017
21:51:54
Всем привет. Расскажите кто как реализовывал чат на сокетах с комнатами (приватные сообщения между двумя пользователями). Необходимо чтобы была возможность отправить сообщение напрямую в сокет, по роуту и напрямую через контроллер (рассылка).
Есть сокет-контроллер чата, контроллер самого чата, и, соответственно роут
Я это уже реализовал, но, чую, костыльно
Основная проблема была при пробросе сокет соединения в контроллер

Denis
27.03.2017
21:56:46
Есть такое, но на питоне)

Google

Denis
27.03.2017
21:56:51
Кинуть)?
Те же вебсокеты только в профиль

Constantin
27.03.2017
22:02:16
https://code.tutsplus.com/tutorials/real-time-chat-with-nodejs-socketio-and-expressjs--net-31708
я что гуглил expressjs популярная надстройка над нодой

Sheldhur
28.03.2017
03:36:28
вставка 4320 срок в sqlite
c# 1.81 сек
js 175.69 сек
это нормально?

Aleksey
28.03.2017
03:42:36

Sheldhur
28.03.2017
03:43:12
нет, серьезно?

Таймураз
28.03.2017
03:49:42
Покажи код

Sheldhur
28.03.2017
03:59:14
https://pastebin.com/XM7Y4Cur
переделал на raw query стало 54 секунды
мб проблема ещё в async\await бабел же генерирует из этого херову тучу кода переделывая в генераторы

Таймураз
28.03.2017
04:04:41
.
У тебя этот код синхронно исполняется
Нужно создать массив промисов и засунуть их в promise.all()

Sheldhur
28.03.2017
04:05:40
эм, но если один из промисов вернет реджет, то всё остановится же

Google

Таймураз
28.03.2017
04:06:25

Sheldhur
28.03.2017
04:08:13
о, да
14
уже лучше
но все равно медленней :с

Таймураз
28.03.2017
04:08:59
Промисы медленные
Bluebird

Sheldhur
28.03.2017
04:10:37
спсб, поковыряю
Bluebird
я так понял в sequelize оно вшито?

Таймураз
28.03.2017
04:30:32
import Promise from 'bluebird'; пропиши и все

Sheldhur
28.03.2017
04:31:09
http://bluebirdjs.com/docs/working-with-callbacks.html#sequelize
а зачем тогда нужны yield\async\await, если они только замедляют? или я что-то не понимаю
просто чтобы от колбеков колбеков избавиться?

equicolor
28.03.2017
05:02:35
С bluebird стало быстрей?)

Sheldhur
28.03.2017
05:17:56
да чет не особо

Таймураз
28.03.2017
05:25:14
Покажи код

Sheldhur
28.03.2017
05:34:57
https://pastebin.com/QDj1RtwZ

Таймураз
28.03.2017
05:42:57
Вроде все норм
Можно еще не строку генерировать, а значения передавать, должно быть быстрее, точно хз.

Google

Таймураз
28.03.2017
05:44:36
14- многовато для js
Тут нужно смотреть, что быстрее на js-е пашет.
Тебе по сути можно драйвер для sqlite напрямую использовать
Вручную таблицу генерить и запросы

Sheldhur
28.03.2017
05:45:38
electron

Таймураз
28.03.2017
05:46:16
@electron_ru

Sheldhur
28.03.2017
05:46:31
через remote.require не хочет sqlite подключать

Таймураз
28.03.2017
05:47:02
Работай лучше в главном процессе
И если важна скорость, асинки убери

Sheldhur
28.03.2017
05:47:55
ну это всё пробрасывать

Таймураз
28.03.2017
05:48:11
Несложно же

Sheldhur
28.03.2017
05:49:14
без асинков рендер виснет и не реагирует ни на что

Таймураз
28.03.2017
05:52:19
Перепиши на промисы

Sheldhur
28.03.2017
05:52:41
а почему в мейнпроцессе должно быть лучше?

Таймураз
28.03.2017
05:53:35
Точно не знаю, но что-то мне подсказывает, что работать в фоновом процессе лучше, чем в браузерном потоке

Sheldhur
28.03.2017
06:29:47
не быстрее

Dmitry
28.03.2017
06:37:19

Sheldhur
28.03.2017
06:38:03
sqlite не умеет пачкой, только через транзакцию если

Dmitry
28.03.2017
06:38:10
Я правда не уверен что sqlite так умеет
Ну значит через транзакцию :)

Sheldhur
28.03.2017
06:38:42
ну это не особо поможет, имхо

Dmitry
28.03.2017
06:38:57
Может в шарпе через транзакцию идет по умолчанию

Google

Sheldhur
28.03.2017
06:39:20
что-то другое сжирает скорость

Dmitry
28.03.2017
06:39:48
Пробовать надо, не знаю как драйвер под капотом работает. В обычных бд пачкой всегда прилично быстрее

Sheldhur
28.03.2017
06:41:15
мб sequelize на столько слоупочный

Dmitry
28.03.2017
06:42:15
Нормальный он, тут же чистый запрос. Я так по миллиону записей гоняю и все шустро
Попробуйте все же через транзакцию данные записать, если не поможет будем думать

Sheldhur
28.03.2017
06:51:51
да ну не, в c# без транзакций же

Andrey
28.03.2017
06:53:38

Admin
ERROR: S client not available

Sheldhur
28.03.2017
06:54:53
ща попробую

Andrey
28.03.2017
06:59:05
В електроне если делать через рендер процесс то будет медленней. Там под капотом чтото типа рпц. Надо из мейн процесса выполнять ) (код не зырил)

Dmitry
28.03.2017
07:00:05
Прототипное наследование
Не то. Видимо не правильно описал задачу. Есть некий сервис который использует настройки, которые может поменять другой сервис (property)
И эти property можно менять не перезагружая никакой процесс (они должны отлавливать изменения и что-то у себя обновлять) или там процессы протекают по таймеру и новые значения в property подхватятся при слудующем тике

Vint
28.03.2017
07:04:17

Dmitry
28.03.2017
07:04:48

Vint
28.03.2017
07:05:35

Dmitry
28.03.2017
07:05:36
Я уже вчера запилил свой костыль на монго+rabbitmq

Vint
28.03.2017
07:06:09
Ну, кролик не совсем для этого, мне кажется.

Dmitry
28.03.2017
07:06:26
Ну у меня просто редиса пока нет в проекте, из-за одних proprty его ставить не вар

Vint
28.03.2017
07:06:28
Или вот попробуй, я всё ленюсь
https://github.com/RIAEvangelist/node-ipc

Dmitry
28.03.2017
07:07:10
Ща гляну. Спасибо

Google

Vint
28.03.2017
07:07:47

Denis
28.03.2017
07:07:56

Vint
28.03.2017
07:08:11
Вот сравнение интересное
https://60devs.com/performance-of-inter-process-communications-in-nodejs.html

Dmitry
28.03.2017
07:10:37
Это что-то типа конфига, которых хранится в бд

Vint
28.03.2017
07:11:33
Ну, как вариант.
Сохранение в БД - это делается инициатором события, к рассылке не относится же.
Я понимаю. У самого такое есть)

Dmitry
28.03.2017
07:12:12
Эт тоже верно

Vint
28.03.2017
07:12:38
Если БД постгрес, то можно ещё его нативным notify воспользоваться. Но он дико куцый.

Dmitry
28.03.2017
07:12:56
Запилю модуль для этого всего.

Vint
28.03.2017
07:15:50

Sheldhur
28.03.2017
07:17:06

Dreamerinnoise
28.03.2017
07:19:37

Sheldhur
28.03.2017
07:23:09
ну вообще в рендер sequelize подрубается через require(electron).remote.require('sequelize'), это как раз через ipc и работает, так что sequelize по сути в мейн процессе вертится
если я всё правильно понял

Oleg
28.03.2017
07:24:59
Всем привет!

Andrey
28.03.2017
07:26:14
Надо проверять я тебе такое не подскажу) -- сам хз
Имхо лучше бы ты просто данные передавал в мейн процесс , через коллбеки. Но это только предположение что так будет лучше