Ответы пользователя по тегу Node.js
  • Как в socket.io получить client request?

    Staltec
    @Staltec
    Node.js разработчик
    io.on('connection', function (socket) {
      //socket.request - request
      //socket.request.res - response
    }
    Ответ написан
  • Обьясните зачем конкретно нужны Redis и Memcached и можно ли их связать с технологиями как nodejs?

    Staltec
    @Staltec
    Node.js разработчик
    Redis это memcached на стероидах. Он пригоден не только для кеша, но и для хранения любых состояний приложения (сессий, индексы, и т.п). В Redis всё это сохраняется на диск. После появления Redis`а, использовать memcached практически не имеет смысла.
    Ответ написан
    Комментировать
  • Как передать на клиент статические ресурсы?

    Staltec
    @Staltec
    Node.js разработчик
    1. Ваше решение по отдаче статического контента - потенциальная дырка в безопасности. Такой подход позволяет читать файлы за пределами document root если указать путь с переходом к вышестоящему каталогу ('../').

    2. Используйте serve-static (https://github.com/expressjs/serve-static) как вариант или Express 4.

    3. А вообще, статику надо отдавать тем, что с этим наиболее хорошо справляется. Используйте для этого Nginx.
    Ответ написан
    3 комментария
  • Как передать на клиент массив строк?

    Staltec
    @Staltec
    Node.js разработчик
    ...
          response.json(cities);
    ...


    Метод json() автоматически установит Сontent-type в 'application/json'. А HTTP статус по умолчанию всегда 200. Его можно явно не указывать.
    Ответ написан
    4 комментария
  • Постоянно падает сервер на node.js?

    Staltec
    @Staltec
    Node.js разработчик
    Могу предположить, что процесс падает из-за разрыва соединения по таймауту со стороны mySQL если длительное время не было активности на подключении. В этом случае исключение имеет следующий вид:
    Error: Connection lost: The server closed the connection.
        at Protocol.end (*path_to_project*/node_modules/mysql/lib/protocol/Protocol.js:103:13)
        at Socket.<anonymous> (*path_to_project*/node_modules/mysql/lib/Connection.js:88:28)
        at Socket.emit (events.js:117:20)
        at _stream_readable.js:944:16
        at process._tickCallback (node.js:442:13)


    Лечится выставлением таймаута для подключения к mySQL вручную:
    mysqlConnection.query("SET SESSION wait_timeout = 604800"); // 7 days timeout

    А вообще конечно надо запускать node-процесс под супервайзером (pm2, forever, supervisor) и заворачивать поток ошибок в соответствующий error.log. Там сразу будет видно с каким исключением завалился процесс. В противном случае с такими вопросами обращайтесь на битву экстрасенсов.
    Ответ написан
    4 комментария
  • Как достать значение из такого кода JAVASCRIPT node js ?

    Staltec
    @Staltec
    Node.js разработчик
    var request = require('request');
    
    function getPageBody (url, callback) {
        request(url, function (error, response, body) {
            callback(error, body)
        });
    }
    
    getPageBody('http://www.google.com', function (err, body) {
        if (err) {
            console.log('ERROR:', err);
        } else {
            console.log('BODY:', body);
        }
    });
    Ответ написан
    Комментировать
  • NodeJS для разработки проектов?

    Staltec
    @Staltec
    Node.js разработчик
    Уже второй год у моего клиента работает система информатизации производственных процессов на оконном производстве (евроокна). Задачи системы:
    — демонстрация технологических карт изделий на участках конвейера;
    — фиксирование операций с изделиями;
    — предоставление в реальном времени данных о состоянии отдельных изделий и в целом состояния производства;
    — аналитика выработки на участках и конкретными сотрудниками;
    — учёт контроля качества;
    — складской учёт готовых изделий и стеклопакетов;
    — планирование графика отгрузки со склада;
    — автоматическое уведомление клиентов о готовности заказа по SMS;

    Все интерфейсы системы реализованы как реалтайм веб-приложения использующие Socket.io.

    Система писалась на NodeJS версии 0.6, потом была переведена на 0.8 и сейчас уже на 0.10. С переходом проблем не было.
    Максимальный аптайм NodeJS процесса системы который удалось наблюдать — 112 дней. Утечек памяти за это время не зафиксировано.

    Для меня после разработки такого решения, вопрос о серьёзности NodeJS больше не стоит. Сам был убеждённым перлистом. Сейчас ни на чём кроме NodeJS писать нет желания.
    Ответ написан
    Комментировать