Node.js + codeigniter

Недавно читал на Node.js и как он отличный веб-сервер и поддерживает сокеты. Я думал использовать его по моему проекту, но до сих пор не смог понять, как взаимодействовать с CI до Node.js. Был проект, выполненный для него с Drupal, и, похоже, он работает хорошо, но я все еще не могу понять, как они интегрировали его вместе.

Просто интересно, есть ли у кого-нибудь опыт в этой идее.

http://drupal.org/project/nodejs

http://www.youtube.com/watch?v=UV8lbdJfESg

Пример:

Пользователь отправляет комментарий через AJAX Комментарий получает хранилище в БД Все пользователи, наблюдающие за потоком, получают уведомление

теперь часть, где после отправки комментария и уведомления, как сообщение msg отправлено на Node.js

Ответ 1

node.js - это неблокирующая IO-библиотека, которая может использоваться как веб-сервер.

Code Igniter - это фреймворк PHP.

Вы хотите запустить веб-сервер node.js рядом с вашим веб-сервером PHP и поговорить с ним?

Я бы рекомендовал вам сделать то или другое. Re напишите весь сайт в express и now.

Если они должны разговаривать друг с другом, вы можете легко открыть TCP-сокет в node с помощью net.

var net = require('net');

var server = net.createServer(function (socket) {
  socket.write("Echo server\r\n");
  socket.pipe(socket);
})

server.listen(8124, "127.0.0.1");

Затем просто используйте fsockopen в PHP для подключения к node через сокет TCP.

Edit:

Комментарии в реальном времени полностью независимы от CI. Вам просто нужно, чтобы на ваших страницах сервера CI был установлен javascript сокета. Ваши страницы разговаривают с node.js по отдельному сокету и никогда не касаются задней части PHP. Ваш socket.io будет передавать данные всем вашим клиентам, а страницы будут отображать новые сообщения с помощью javascript.

Все, что нужно для кодирования, это вставить

<script src="url/socket-io.js" />
<script src="url/myChat.js" />

Дальнейшее редактирование:

Итак, вам нужен ваш пользователь для входа в ваш веб-узел. Я не уверен, как они вступают в систему сейчас, но отправка одного и того же имени пользователя/пароля hash в node.js не должна быть слишком сложной. Получите node.js, чтобы открыть соединение с вашей базой данных, где вы храните пользователей. Затем сохраните каналы/потоки/чаты/сообщения, которые конкретный пользователь "подпишет" в базу данных.

Затем, когда node получает сообщение от "канала", он просто запрашивает базу данных, на которую пользователи должны нажимать это сообщение, а затем оно толкает его.

Я ответил на аналогичную question о создании чат-сервера с помощью node и видео-учебника now имеет хороший пример. Вы должны иметь возможность превратить "несколько комнат в чате" в "многократные комментарии комментариев" довольно легко.

Дальнейшее редактирование

Не добавляйте URL-адрес comment/add/ при нажатии кнопки add. Не используйте ajax. Вместо этого используйте socket.io.

Так что-то вроде:

// on the client side
$("#add").click(function() {
    socket.send("add" + user.toJSON());
});

socket.on("message", function(m) {
    if (/^new/.test(m)) {
         var post = m.substring(3);
         $("#comments").append($("<div></div>").text(post));
    }
});

// on the server side
var socket = io.listen(server); 
socket.on('connection', function(client){ 
    // new client is here! 
    client.on('message', function(m){ 
        if (/^add/.test(m)) {
             client.broadcast("new"+m.substring(3));
        }
    }); 
}); 

Так просто клиент отправляет сообщение "добавить комментарий" при нажатии кнопки "Добавить". Сервер прослушивает сообщение добавления и передает сообщение всем другим клиентам. Эти клиенты уже прослушивают новое сообщение, а новый добавляет комментарий.

Ответ 2

Я думаю, что в общем случае использования node.js с CodeIgniter не было бы прямой связи между ними.

В приведенном выше примере это может быть выполнено с использованием метода "длинный опрос" с node.js. (http://blog.nemikor.com/2010/05/21/long-polling-in-nodejs/)

По сути, ваша клиентская сторона AJAX отправит запрос на ваш сервер node.js. Этот запрос на сервере node.js запустит процесс, который проверяет вашу БД на новые комментарии каждую секунду (или 5 секунд и т.д.). Когда он найдет новый комментарий, он вернет его как ответ на вызов JS AJAX на стороне клиента, и ваш JS будет обрабатывать его оттуда.

Это один из подходов, в котором можно комбинировать node.js и CodeIgniter.

ПРИМЕЧАНИЕ. node.js очень хорош для длительного опроса, потому что вы можете поддерживать множество запросов одновременности с одного сервера node.js, из-за неблокирующего, основанного на событии контура node.js

Ответ 3

Как это сделал Drupal, используется плагин Node.js Socket.io. Когда комментарий отправляется, drupal уведомляет сокет с информацией о комментариях, Node.js затем уведомляет других "клиентов".

Ответ 4

Я только что нашел этот пакет:

NodeigniterMVC - структура MVC для node.js, вдохновленная Codeigniter. Он позволяет настраивать маршрутизацию, привязку и частичное представление изображений; встроенный с помощниками, библиотеками и CLI. Полностью совместим с Бауэр.

https://www.npmjs.com/package/nodeignitermvc

Итак, из того, что я понимаю, это пакет, который запускает unde node.JS, если вы еще не запустили проект, и хотите, чтобы они оба не заставляли себя слишком беспокоиться, играя с сокетами на вашем сервере - это выглядит идеально.

возможно, это помогает:)