Ответ 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));
}
});
});
Так просто клиент отправляет сообщение "добавить комментарий" при нажатии кнопки "Добавить". Сервер прослушивает сообщение добавления и передает сообщение всем другим клиентам. Эти клиенты уже прослушивают новое сообщение, а новый добавляет комментарий.