node.js - это неблокирующая библиотека ввода-вывода, которую можно использовать в качестве веб-сервера.
Code Igniter - это PHP-фреймворк.
Хотите ли вы запустить веб-сервер node.js рядом с вашим PHP-веб-сервером и заставить их общаться друг с другом?
Я бы порекомендовал вам сделать одно или другое.Перепишите весь свой веб-сайт в express и сейчас .
Если они должны общаться друг с другом, вы можете легко открыть TCP-сокет в узле с помощью 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 для подключения к узлу через сокет TCP.
Редактировать:
Комментарии в реальном времени полностью независимы от CI.Вам просто нужно иметь некоторое количество кода socket.io на страницах вашего CI-сервера.Ваши страницы общаются с node.js через отдельный сокет и никогда не касаются серверной части PHP.Ваш socket.io отправит данные всем вашим клиентам, и на страницах появятся новые сообщения с javascript.
Все, что нужно сделать codeigniter, это вставить
<script src="url/socket-io.js" />
<script src="url/myChat.js" />
Дальнейшее редактирование:
Таким образом, вам нужно, чтобы ваш пользователь вошел через веб-сокет.Я не уверен, как они сейчас входят в систему, но отправка того же хеша имени пользователя и пароля в node.js не должна быть слишком сложной.Получите node.js, чтобы открыть соединение с вашей базой данных, где вы храните пользователей.Затем сохраните в базе данных каналы / темы / чаты / сообщения, на которые конкретный пользователь «подписан».
Затем, когда узел получает сообщение от «канала», он просто запрашивает у базы данных, каких пользователей нажать на него.сообщение, а затем отправляет его.
Я ответил на аналогичный вопрос о написании сервера чата с использованием узла, и видеоурок теперь имеет хороший пример.Вы сможете легко превратить «чат в нескольких комнатах» в «комментирование нескольких потоков».
Дальнейшее дальнейшее редактирование
Не публиковать на URL comment/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));
}
});
});
Поэтому просто клиент отправляет сообщение «добавить комментарий», когда вы нажимаете кнопку добавить.Сервер прослушивает сообщение о добавлении и передает сообщение всем другим клиентам.Эти клиенты уже прослушивают новое сообщение, а новый добавляет комментарий.