• Кто подскажет ответ по ряду вопросов?

    @Serjio-Grig Автор вопроса
    Сергей Сергей, а при присоединении нового пользователя, соответственно, сохраняем его в "кэше" нашего сервера, а так же отправляем запрос на регистрацию пары ключ=>значение (userID=>serverID) на головной сервер. Все правильно?
  • Кто подскажет ответ по ряду вопросов?

    @Serjio-Grig Автор вопроса
    Сергей Сергей, а потом при той же отправке сообщения можно будет использовать нечто вроде:
    socket.on('send message', function(data){
      var get_options = {
        method: 'GET',
        uri: 'https://ss1.example.com/getServer:'+data.userID+''
      };
    
      request(get_options)
      .then(function(response){
        // Здесь парсим полученный от головного сервера JSON и вытаскиваем из него сервер другого клиента, а далее отправляем на другой сервер API запрос, показывая, что нам нужно отобразить сообщение для пользователя userID
      })
      .catch(function(err){
        // Обрабатываем ошибку, если не удалось достучаться до головного
      });


    Я Вас верно понял?
    Ну и, помимо этого, хранить на каждом сокет-сервере список пользователей, которые к нему подключены и искать перво-наперво среди них, чтобы не дергать API без повода. Верно?
  • Кто подскажет ответ по ряду вопросов?

    @Serjio-Grig Автор вопроса
    Сергей Сергей, а общение головного сервера и сокет-серверов посредством API, верно?
  • Кто подскажет ответ по ряду вопросов?

    @Serjio-Grig Автор вопроса
    Сергей Сергей, тогда вопрос следующий.
    Каким образом можно ввести горизонтальное масштабирование Node.JS с Socket.IO, чтобы данные о сокетах были доступны для всех серверов?
  • Как сделать всплывающее сообщение "в облаке"?

    @Serjio-Grig Автор вопроса
    sim3x, к сожалению, уже с мобильного(
  • Кто сталкивался с install npm express?

    @Serjio-Grig Автор вопроса
    Артём Петренков, благодарю, буду копаться.
  • Кто сталкивался с install npm express?

    @Serjio-Grig Автор вопроса
    Артём Петренков, Microsoft Windows [Version 6.1.7601]
    (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

    C:\Users\Например Андрей>npm -v
    5.6.0

    C:\Users\Например Андрей>cd /d D:\node

    D:\node>cd proj

    D:\node\proj>node app.js
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object. (D:\node\proj\app.js:2:15)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

    D:\node\proj>npm install npm@latest -g
    C:\Users\Например Андрей\AppData\Roaming\npm\npx -> C:\Users\Например Андрей\App
    Data\Roaming\npm\node_modules\npm\bin\npx-cli.js
    C:\Users\Например Андрей\AppData\Roaming\npm\npm -> C:\Users\Например Андрей\App
    Data\Roaming\npm\node_modules\npm\bin\npm-cli.js
    + npm@5.8.0
    added 523 packages in 66.481s

    D:\node\proj>npm -v
    5.6.0

    D:\node\proj>npm install express
    npm WARN registry Using stale data from https://registry.npmjs.org/ because the
    host is inaccessible -- are you offline?
    npm WARN registry Using stale package data from https://registry.npmjs.org/ due
    to a request error during revalidation.
    npm WARN saveError ENOENT: no such file or directory, open 'D:\node\package.json
    '
    npm notice created a lockfile as package-lock.json. You should commit this file.

    npm WARN enoent ENOENT: no such file or directory, open 'D:\node\package.json'
    npm WARN node No description
    npm WARN node No repository field.
    npm WARN node No README data
    npm WARN node No license field.

    + express@4.16.3
    added 43 packages, removed 469 packages and moved 7 packages in 37.793s

    D:\node\proj>npm -v
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'D:\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'D:\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

    D:\node\proj>
  • Кто сталкивался с install npm express?

    @Serjio-Grig Автор вопроса
    Роман, Microsoft Windows [Version 6.1.7601]
    (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

    C:\Users\Например Андрей>npm -v
    5.6.0

    C:\Users\Например Андрей>cd /d D:\node

    D:\node>cd proj

    D:\node\proj>node app.js
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object. (D:\node\proj\app.js:2:15)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

    D:\node\proj>npm install npm@latest -g
    C:\Users\Например Андрей\AppData\Roaming\npm\npx -> C:\Users\Например Андрей\App
    Data\Roaming\npm\node_modules\npm\bin\npx-cli.js
    C:\Users\Например Андрей\AppData\Roaming\npm\npm -> C:\Users\Например Андрей\App
    Data\Roaming\npm\node_modules\npm\bin\npm-cli.js
    + npm@5.8.0
    added 523 packages in 66.481s

    D:\node\proj>npm -v
    5.6.0

    D:\node\proj>npm install express
    npm WARN registry Using stale data from https://registry.npmjs.org/ because the
    host is inaccessible -- are you offline?
    npm WARN registry Using stale package data from https://registry.npmjs.org/ due
    to a request error during revalidation.
    npm WARN saveError ENOENT: no such file or directory, open 'D:\node\package.json
    '
    npm notice created a lockfile as package-lock.json. You should commit this file.

    npm WARN enoent ENOENT: no such file or directory, open 'D:\node\package.json'
    npm WARN node No description
    npm WARN node No repository field.
    npm WARN node No README data
    npm WARN node No license field.

    + express@4.16.3
    added 43 packages, removed 469 packages and moved 7 packages in 37.793s

    D:\node\proj>npm -v
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'D:\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3
    module.js:549
    throw err;
    ^

    Error: Cannot find module 'D:\node\node_modules\npm\bin\npm-cli.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

    D:\node\proj>
  • Кто сталкивался с install npm express?

    @Serjio-Grig Автор вопроса
    Установка Express ошибок не выдает - полоса заполнилась, всё докрутилось, каких-то ошибок в консоль не высыпалось. Но стоит сразу после этого ввести любую команду, связанную с npm - всё, беда.
    modules.js визжит как недобитая хрюшка, ссылаясь на то, что не может найти модуль node\node_modules\npm\***-cli.js, а сам Express в папке проекта не появляется.
  • Кто сталкивался с install npm express?

    @Serjio-Grig Автор вопроса
    Команды, которые использую:
    cd /d D:\node\project
    npm install express --save
  • Как поправить кнопку закрытия модального окна?

    @Serjio-Grig Автор вопроса
    .modal {
    	position: fixed;
    	left: 50%;
    	top: 50%;
    	margin: 0px;
    }
    
    .modal > .title {
    	overflow: hidden;
    }
    
    .modal > .title > .close {
    	background: url("images/close.png") no-repeat center center;
    	width: 48px;
    	height: 19px !important;
    	float: right;
    	margin-top: -8px;
    	margin-right: -3px;
    	cursor: pointer;
    	opacity: 0.9;
    }
  • Как правильно составить данный запрос на поиск?

    @Serjio-Grig Автор вопроса
    OKyJIucT, сейчас проверю, спасибо)
  • Как правильно составить данный запрос на поиск?

    @Serjio-Grig Автор вопроса
    OKyJIucT, пуруруруру... Объясню ещё раз.
    Есть таблица dynprops с параметрами.
    Например,
    title=Можно курить в машине; id=1; type=checkbox
    title=Можно с багажом; id=2; type=checkbox
    title=Длительность поездки; id=3; type=number

    Человек в поиске отмечает чекбоксы, что ему нужна машина, в которой можно курить и в которой можно с багажом поехать.
    И так же вводит, что длительность поездки ему нужна от 3 до 5 часов.

    Данные объявления, которое должно выдать:
    dynprops_vals:
    board_id=1;dynprop_id=1;dvals=1 (чекбокс)
    board_id=1;dynprop_id=2;dvals=1 (чекбокс)
    board_id=1;dynprop_id=3;dvals=4 (длительность поездки - 4 часа, число)

    нужно дополнить запрос таким образом, чтобы искало не только по отмеченным чекбоксам, но и в заданном диапазоне для "Длительности поездки" (условно).
    Что-то вроде поиска объявлений по Авито - выдавать не только телефоны в Москве, а телефоны в Москве с ценой от 100 до 10000 рублей и весом от 50 до 150 грамм
  • Как правильно составить данный запрос на поиск?

    @Serjio-Grig Автор вопроса
    OKyJIucT, body_lenth - это к примеру.
    Например, просто так запрос выглядел бы так (предположим, параметр длины кузова имеет ID 13):
    SELECT board_id FROM dynprops_vals WHERE dynprop_id = '13' AND dvals >= '100' AND dvals <= '300';
  • Как правильно составить данный запрос на поиск?

    @Serjio-Grig Автор вопроса
    OKyJIucT, нет, т.к. каждый параметр занесен в виде отдельной записи.
    Например, параметры id=1,id=2 - checkbox'ы, параметр id=3 - какое-то числовое значение.

    В $this->inpus->post() перебирается отправленный массив, числовое значение ищется в диапазоне от A до B, вот структура таблицы параметров:

    id - идентификатор записи c AUTO_INCREMENT
    board_id - ID объявления, к которому привязано значение параметра
    dynprop_id - ID параметра, добавленного из админ-панели
    dvals - значение параметра, для checkbox принимает 1, для числового поля - соответственно, некое числовое значение
  • Как узнать ID браузера?

    @Serjio-Grig Автор вопроса
    Писать в Cookies или сессию не есть хорошо - нужен какой-то идентификатор, который пользователь не может изменить и он хранится в памяти устройства даже после очистки куков, но в то же время доступен из веб-среды
  • Как узнать ID браузера?

    @Serjio-Grig Автор вопроса
    B догонку sw.js
    'use strict';
    
    self.addEventListener('install', function(event) {
      event.waitUntil(self.skipWaiting());
    });
    
    self.addEventListener('push', function (event) {
      event.waitUntil(
        fetch('/latest.json').then(function (response) {
          if (response.status !== 200) {
            console.log('Latest.json request error: ' + response.status);
            throw new Error();
          }
    
          return response.json().then(function (data) {
            if (data.error || !data.notification) {
              console.error('Latest.json Format Error.', data.error);
              throw new Error();
            }
    
            var title = data.notification.title;
            var body = data.notification.body;
            var icon = 'https://mysite.ru/my_beautiful_push_icon.png';
    
            return self.registration.showNotification(title, {
              body: body,
              icon: icon,
              data: {
                url: data.notification.url
              }
            });
          }).catch(function (err) {
            console.error('Retrieve data Error', err);
          });
        })
      );
    });
    
    self.addEventListener('notificationclick', function (event) {
      event.notification.close();
      var url = event.notification.data.url;
      event.waitUntil(clients.openWindow(url));
    });
  • Как узнать ID браузера?

    @Serjio-Grig Автор вопроса
    Нет. При отправке Push-уведомлений используется Service Worker, который и используется для отправки. Вопрос - возможно ли получить Service worker через PHP, или обязательно использование JavaScript?
    'use strict';
    function SendPushMe() {
      if ('serviceWorker' in navigator) {
        console.log('Service Worker is supported');
        navigator.serviceWorker.register('/sw.js').then(function() {
          return navigator.serviceWorker.ready;
        }).then(function(reg) {
          console.log('Service Worker is ready :^)', reg);
          reg.pushManager.subscribe({userVisibleOnly: true}).then(function(sub) {
            console.log('endpoint:', sub.endpoint);
            $.get( "https://mysite.ru/createpushadresat?adresat=" + sub.endpoint, function( data ) {});
          });
        }).catch(function(error) {
          console.log('Service Worker error :^(', error);
        });
      }
    }

    Пример реализации SW'а
  • Как ввести оплату через Сбербанк?

    @Serjio-Grig Автор вопроса
    Boris Korobkov, а стоит ли использовать напрямую Интернет-эквайринг от того же зеленого банка?
  • Как ввести оплату через Сбербанк?

    @Serjio-Grig Автор вопроса
    ИП уже зарегистрировано, нужна документация по реализации этого на PHP