but1head

but1head

С нами с 01 апреля 2014; Место в рейтинге пользователей: #19
but1head
26 января 2017, 05:20
+1
Немного обновил, перевел на london is the capital of great britain, так же собрал пакет для npm
npm i modnodejs-server
node node_modules/modnodejs-server
but1head
25 января 2017, 23:19
0
Видимо нода устаревшая и не понимает такой синтаксис, на modhost отрабатывается. Тут только могу порекомендовать обновить ноду.

stackoverflow.com/a/38402346/5666675
but1head
25 января 2017, 23:13
0
node_modules/forever/bin/forever stopall
node modnodejs.js

и смотри что в консоли. перед выходом с консоли снова
node_modules/forever/bin/forever start modnodejs.js
ибо node modnodejs.js будет работать пока подключен по ssh
but1head
25 января 2017, 23:07
0
В настройках выше же сказано. У вас фронтэнд долбится на локалхост, которого нет. Или порт не тот указан.

Напиши в личку (контакты в профиле), ибо ты сообщение отредактировал.
but1head
25 января 2017, 22:59
0
Обновил гит и modstore
p.s. теперь modnodejs_host должен быть указан как http(s)://site.ru:9090 (при установке указывается автоматически). modnodejs_port более не используется.

github.com/but1head/modNodejs/commit/ad3bd175e15b434a25173aab17971e47ddc55a29
but1head
25 января 2017, 21:30
+3
Как правильно заметил Николай, в пакете и на гитхабе не та версия, нужно использовать
$modNodejs = $modx->getService('modnodejs', 'modNodejs', $modx->getOption('core_path') .  'components/modnodejs/model/modnodejs/');
через несколько часов обновлю
but1head
25 января 2017, 17:43
+4
Вот Николай не позволяешь ты себе обойти мою тему стороной, «а там вот так плохо», «не так как надо», «А тут возможности гораздо шире».

1) Ты мне писал «У тебя только GET запросы, а когда будут другие?». Теперь посмотри на либу которую ты используешь, я там только GET и увидел. Меня не прикалывает использовать либу из 6 файлов, вместо 3х функций внутри компонента.

2) Твой клиент не работает с socketio и не будет. Для меня главное чтоб socketio понимал входящие сообщения, у него эвент и дата разделены, именно поэтому там где-то стояло 42/. Почему socketio? Да потому что это фреймоврк для сокетов, с серверной и фронтэнд частью.

3) Послать заказы из двух магазинов на один сервер? Укажи в настройке modnodejs_host адрес на который все будет отправляться. Я вообщем то и согласен, что кому-то понадобиться отправить в другое место это дело, поэтому добавлю 3й параметр хоста в ->emit($action, $data, $host);

Перестань уже при каждой возможности тыкать в мою тему, хочешь помочь — пиши\предлагай на гитхабе и\или личке. Все что я увидел за 2 дня: «Никита все очень плохо, я не могу сделать систему мониторинга для моего компонента из твоего компонента, надо тебе это доработать.» и «Всем привет, Никита не доработал свой компонент, поэтому я сделал ЛУЧШЕ и он будет работать с моим компонентом, да и возможностей у меня больше». Уже смешно.

Ну и самое главное: у меня готовое бесплатное решение для реалтайма (фронт и бэк), у тебя просто отправлялка которая на данный момент работает только с твоим не бесплатным компонентом.
but1head
25 января 2017, 15:55
0
Браузер не конектится к «к ноде через php».
Браузер конектится к ноде, она в свою очередь проверяет сесиию в пхп запросом в modx.
but1head
25 января 2017, 15:49
+1
А кто мешает разруливать в ноде запросы с фронтэнда?

фротнэнд
socket.emit('event-to-node', {test: 1});
node
socket.on('event-to-node', function(data){ 
	console.log(data); //test = 1;
	console.log(socket.handshake.user); // modx user с группами
});
Далее из ноды делайте что хотите. Хотите обращайтесь в Modx, шлите ответ обратно, подключайтесь к любому апи и тд.

Конкретно моя «связка» включает для себя ВОЗМОЖНОСТЬ соединиться с модкс, если вам это не надо — не делайте, мы все же на modx.pro сидим а не на zachem-modx-v-nodejs.pro
but1head
25 января 2017, 14:50
0
Пока настолько в дебри node не лазил, да и знания серверной части у меня очень посредственные.
Возможно это https://github.com/foreverjs/forever-monitor подойдет
but1head
25 января 2017, 14:45
+1
Есть события на фронтэнде (которые отправляются из ноды), есть события на ноде (которые могут отправлятся в\из модкс).
На этой сборке у меня написана система личных сообщений, скоро выложу.
but1head
25 января 2017, 14:43
0
И не будет. Файлы в ручную заливать придется. Потом напишу инсталятор для ноды как это сделал Николай.
but1head
24 января 2017, 22:18
+2
shop1.ru
shop2.ru
shop3.ru

modxclub.ru — нода

у всех стоит modnodejs в настройке modnodejs_host прописан modxclub.ru

Далее ты рулишь всеми соединениями, но тут уже придется переделывать логику сервера, ввиду того, что проверяет сессиию он на одном modx
e. То что ты хочешь не общее решение, а конкретно под тебя. Вот мне например не нужно собирать данные с кучи сайтов, каждый сайт это отдельный клиент и тд. А ты строишь какой-то проект мультистатистики и хочешь готовое решение использовать.

Еще раз, то что я предлагаю это работа ОДНОГО nodejs сервера с одним MODX (не важно кол.во контекстов\доменом). Я не сомневаюсь что кому-нибудь поможет то, что я сделал, да и на гитхабе все исходники, кому нужно разовьет проект для себя, кому-то хватит того, что есть.

Давай закончим. Если хочешь что-то предложить — пул реквест на гитхаб или личка.
but1head
24 января 2017, 21:42
0
И зачем мне отправлять запрос на твой адрес? Или на чужой?
$monodejs->emit('event', data); не вернет ответа, это отправка запроса в ноду и далее за обработку отвечает нода, она уже может из себя слать что и куда угодно, как минимум обратно в modx (modx.request('action', data, callback)).

Следовательно ты хочешь отправить запрос с modx в чужую ноду. И получить ответ внутри php, но php завершит процесс до ответа. Можно конечно извернуться и дать ответ, но что в это время будет делать «пользователь» сайта? Ждать ответа?

На примере карты, например, получает ответ браузер по get параметрам, но это браузер а не php.

Может быть я мало осведомлен в логике работы связки пыхи и ноды, но я не вижу смысла слать запросы на чужие сервера. Приведи пример где не только тебе будет полезно послать запрос из модкс куда-либо, и я начну над ним думать. Сейчас ты предлагаешь сделать так, как тебе удобно. Я не вижу в этом смысла для «всех». Добавить эти хотелки не проблема.

И да, каждый сокет (из ноды) проверяет сессию в модкс, если нет сессии — отключается не давая выполнять дальнейшие действия.

А вообще по таким вот обсуждения я уже предлагал тебе общаться в слаке да бы не захломлять тему.
but1head
24 января 2017, 21:05
+2
1) Потому что ты не используешь socket.io, логично? Нигде этот адрес писать не надо, сокет сам его знает.
2) Потому что это самое удобное решение как кажется мне
3) У меня все прекрасно принимает через JSON.parse()
4) А зачем использовать несколько серверов?

Посмотрел, ты пишешь свое решение под свое решение, а я не пишу решение под твое решение. Ты щас предлагаешь подстраивать компонент под твои нужды, но то что ты хочешь уж слишком не «общее решение». Как много слов «решение»… Короче говоря это пример обработки, если кто-то строит серьезные проект то и делать всю обработку «для себя» надо.

И ты уже не первый раз говоришь по ws, почитай про инструмент который я использую socket.io/docs/ может отпадут дальнейшие вопросы

var io = require('socket.io')();
io.on('connection', function(client){});
io.listen(3000);
but1head
24 января 2017, 20:17
0
1) значит у тебя по этому адресу нет ответа, следовательно не правильный хост\порт
2) моя связка на сокет.io, на ноде вылавливаются эвенты через сокетио а не «голая нода»
3) JSON.parse(data)

Я не могу предположить зачем слать запросы на кучу разных серверов, когда будет использоваться один.
По поводу 42 в начале — я долго ковырял, сокеты не принимали запросы без такой конструкции (где-то на гитхабе выловил)
but1head
23 января 2017, 23:54
+3
По началу «карьеры» попадался на таких заказчиков, после этого взял за правило первым делом засунуть бэкдор и разрабатывать с ним, после оплаты вычищаю. Бэкдор банальный файл менеджер для браузера.
but1head
23 января 2017, 23:43
+1
Имеено так карта и работает, только без пары шагов зума, вроде и без них все быстро, проект тоже еще не особо начат, в процессе буду подтачивать
but1head
23 января 2017, 23:34
+1
Это leaflet + googleMutant(стили как у гугл мапа).
Во время тестов 2гис, гугл и яндекс погибали, все было оч долго. Яндекс еще как-то держался, но в его гроб последний гвоздь заколотил дизайнер с такой цветовой схемой. Вообще спасибо разработчикам supercluster ( www.mapbox.com/blog/supercluster/ ), очень и очень быстрая штука с поддержкой браузера\ноды из коробки. На гите вполне себе рабочий пример. Еще думаю добавлю проверку файла на изменение, чтоб точки обновлялись когда в бэкенде менеджеры копаются.
but1head
23 января 2017, 23:25
5
+5
Мини пост про node.js, не много оффтоп.
Есть у меня один проект, где планировалось вывести на карте 50к точек, много всяких карт перебрал и тд, все было долговато (около 2х секунд, т.к. файл точек весит около 10мб). Потом подумал зачем отдавать все это дело клиенту, решил написать сервер на ноде для «порционной» выгрузки в пределах видимости. Вот что получилось:
s8276.h7.modhost.pro/demo/ на карте размещен кластер на 1.000.000 точек (вес файла 135мб), даже с телефона отрабатывает моментально. Выложил все исходники на github.com/but1head/supercluster-nodejs, может кому-нибудь пригодится.