node.js работает вместе с Apache PHP?

Я пытаюсь получить мою голову вокруг node.js

Я очень доволен своей настройкой LAMP, поскольку она в настоящее время удовлетворяет моим требованиям. Хотя я хочу добавить некоторые функции реального времени в свое приложение PHP. Например, показ всех пользователей, которые вошли в мой сайт и возможности чата.

Я не хочу заменять свой PHP-сервер, но мне нужны масштабируемые решения в режиме реального времени.

1. Могу ли я загрузить node.js в микс, чтобы удовлетворить мои потребности, не перестраивая весь сценарий на стороне сервера приложений?

2. Как наилучшим образом мог node.js обслуживать мои функции «chat» и «now logged»?

Здорово слышать ваши взгляды!

W.

    Я предлагаю вам использовать Socket.io вдоль side node.js. Установите и загрузите библиотеки из http://socket.io/ . Вы можете запустить его вместе с сервером Apache без проблем.

    Сначала создайте сервер узлов:

    var http = require('http') , url = require('url') , fs = require('fs') , io = require('../')//path to your socket.io lib , sys = require(process.binding('natives').util ? 'util' : 'sys') , server; server = http.createServer(function(req, res){ var path = url.parse(req.url).pathname; }), server.listen(8084);//This could be almost any port number 

    Во-вторых, запустите ваш сервер из командной строки, используя:

     node /path/to/your/server.js 

    В-третьих, подключитесь к сокету с помощью клиентской стороны js:

     var socket = new io.Socket(null, {port: 8084, rememberTransport: false}); socket.connect(); 

    Вы также должны будете включить клиентскую сторону socket.io lib.

    Отправляйте данные с клиентской стороны на сервер узлов, используя:

     socket.send({data:data}); 

    У вашего сервера.js также должны быть функции для обработки запросов:

     io.on('connection', function(client){ //action when client connets client.on('message', function(message){ //action when client sends msg }); client.on('disconnect', function(){ //action when client disconnects }); }); 

    Существует два основных способа отправки данных с сервера клиенту:

     client.send({ data: data});//sends it back to the client making the request 

    а также

     client.broadcast({ data: data});//sends it too every client connected to the server 

    Я подозреваю, что чат, а также зарегистрированный листинг будет работать через Ajax.

    Часть чата будет довольно проста для программирования в Node.js, используйте один из модулей mysql для узла, чтобы подключиться к существующей базе данных и запросить информацию для входа в систему и т. Д., А затем выполнить все фактические беседы через Node.js, я рекомендую вам проверьте Socket.io, поскольку он делает обход браузера / Node.js действительно тривиальным, это должно позволить вам сосредоточиться на фактической логике чата.

    Кроме того, вы можете взглянуть на «официальную» демонстрацию чата Node.js, для некоторого вдохновения.

    Что касается текущей онлайн-части, это никогда не бывает легко реализовать, поскольку все, что вы можете сделать, это отобразить что-то в строках «5 пользователей, активных за последние X минут».

    Конечно, вы можете легко добавить Ajax, который запрашивает сервер чата и отображает список пользователей, который находится на главной странице.

    Или вы совершенно сумасшедшие и устанавливаете соединение Socket.io для каждого посетителя и контролируете его таким образом, хотя сомнительно, стоит ли это усилий.

    Как насчет использования файла сокета, так же как и pedro с ngnx? http://nodetuts.com/tutorials/25-nginx-and-nodejs.html

    Вы можете запустить php из узла js с помощью node-php: https://github.com/mkschreder/siteboot_php

    Я запускаю сервер wss (secure websocket) вместе с настройкой LAMP.

    Node.js может легко запускаться вместе с любым другим веб-сервером (apache), который вы хотите. В примере @KitCarrau он позволяет узлу запускаться на порт 8084 – там он работает и слушает, а не 80 или 443 и т. Д. (Обычно это делают apache). Но вы все равно можете использовать один и тот же порт, чтобы также обслуживать http / https (в моем случае просто указывается какая-то conf и общая информация о том, что служба включена).

    Начиная с консоли не лучший способ (удаленно, узел останавливается при закрытии консоли). Я рекомендую взглянуть на Running node как на сервис

    Легко отслеживать журнал в реальном времени (log with console.log («привет»), в вашем приложении):

     tail -f /var/.../SocketServer.log 

    Пример скрипта (node-server.conf):

     author .... description "node.js server" # used to be: start on startup # until we found some mounts weren't ready yet while booting: start on started mountall stop on shutdown # Automatically Respawn: respawn respawn limit 99 5 # Max open files are @ 1024 by default. Bit few. limit nofile 32768 32768 script # Not sure why $HOME is needed, but we found that it is: export HOME="/root" exec node /var/.../SocketServer.js >> /var/www/node/.../SocketServer.log 2>&1 end script post-start script # Optionally put a script here that will notifiy you node has (re)started # /root/bin/hoptoad.sh "node.js has started!" echo "\n*********\nServer started\n$(date)\n*********" >> /var/.../SocketServer.log end script