Intereting Posts
Как проверить, существует ли таблица MySQL с PHP? ImageMagick работает в командной строке, но когда exec () в php возвращает 5 с «несовместимой версией библиотеки», PHP ленивое отображение массива Как обновить данные, импортируемые из файла CSV Я хочу использовать несколько функций select2 onchange динамически $ this-> input-> post () всегда возвращает FALSE, из-за нежелательного 301 Как предотвратить множественную отправку форм при нескольких кликах в PHP как отсортировать многомерный массив с помощью внутреннего ключа Соглашения об именах MySQL, должно ли имя поля включать имя таблицы? как вызвать функцию в PHP через 10 секунд загрузки страницы (не используя HTML) Класс PHP: глобальная переменная как свойство в классе Инкрементный вывод – JQuery и PHP Проблемы с подключением к MySQL с использованием PDO Доступ к необъявленному статическому свойству: Doctrine \ ODM \ MongoDB \ Mapping \ Driver \ AnnotationDriver :: Создание случайного шестнадцатеричного цветового кода с помощью PHP

создать узел nodejs chat в веб-приложении php

Я слышал, что nodejs – лучший выбор для создания приложения чата реального времени. Поэтому я решил попробовать.

//on server side //create nodejs server var http = require('http'); var chatApp = http.createServer(function (request, response) { //create an html chat form listened by this nodejs server response.writeHead(200, {'Content-Type': 'text/html'}); response.write('<script src="http://localhost/nodejs/app/socket.io.js"></script><script src="http://localhost/nodejs/app/chat.client.js"></script><input type="text" id="message_input"><div id="chatlog"></div>'); response.end(); }).listen(8000); //create websocket protocol via socket.io var io = require('socket.io').listen(chatApp); //send data to client io.sockets.on('connection', function(socket) { socket.on('message_to_server', function(data) { io.sockets.emit("message_to_client",{ message: data["message"] }); }); }); //on client side //get data from server response var socketio = io.connect(); socketio.on("message_to_client", function(data) { document.getElementById("chatlog").innerHTML = ("<hr/>" + data['message'] + document.getElementById("chatlog").innerHTML); }); //submit and send data to server via enter key document.onkeydown = function(e){ var keyCode = (window.event) ? e.which : e.keyCode; if(keyCode == 13){ var msg = document.getElementById("message_input").value; socketio.emit("message_to_server", { message : msg}); document.getElementById("message_input").value = ''; } }; 

Все выглядит нормально, но php webapp intergration. Как я могу заставить его работать как часть веб-страницы php?

Related of "создать узел nodejs chat в веб-приложении php"

Как уже упоминалось в моем первоначальном комментарии, вы можете позволить вашему PHP-приложению продолжать делать то, что он делал все время, и просто использовать NodeJS для обработки сетевых подключений через сокет (через socket.io). Ниже приведен пример упрощенной структуры, которую вы могли бы использовать:

Ваша страница chat.php или контроллер чата:

 <?php // Handle /chat route // Perform any authentication with your database // Render template ?> <!-- The following HTML is rendered --> <html> <head> ... <script src="http://localhost/nodejs/app/socket.io.js"></script> <script src="http://localhost/nodejs/app/chat.client.js"></script> </head> <body> ... <input type="text" id="message_input"> <div id="chatlog"></div> ... <script> var socketio = io.connect('http://localhost:8080'); socketio.on("message_to_client", function(data) { document.getElementById("chatlog").innerHTML = ("<hr/>" + data['message'] + document.getElementById("chatlog").innerHTML); }); //submit and send data to server via enter key document.onkeydown = function(e){ var keyCode = (window.event) ? e.which : e.keyCode; if(keyCode == 13){ var msg = document.getElementById("message_input").value; socketio.emit("message_to_server", { message : msg}); document.getElementById("message_input").value = ''; } }; </script> </body> </html> 

Ваше приложение NodeJS будет выглядеть следующим образом. Обратите внимание на отсутствие регулярной обработки HTTP-соединений, которую мы теперь разрешаем PHP:

 //create websocket protocol via socket.io var io = require('socket.io').listen(8080); //send data to client io.sockets.on('connection', function(socket) { socket.on('message_to_server', function(data) { io.sockets.emit("message_to_client",{ message: data["message"] }); }); }); 

И это база, которую вы будете использовать. Как упоминалось ранее в моем комментарии, это можно расширить, чтобы добавить механизмы аутентификации с поддержкой базы данных в часть узла NodeJS сервера.