В настоящее время у меня есть сайт, который я написал на PHP через структуру Laravel . Я написал чат с помощью nodeJS с Socket.IO и Express, и теперь я хочу, чтобы он интегрировал его в мой уже написанный веб-сайт Laravel. Проблема заключается в том, что чат должен находиться на главной странице, которая в настоящее время отображается в представлениях Laravel. В настоящее время я нахожусь на общем хостинге.
Вопрос: Каковы ваши лучшие предложения для такой интеграции? Я знаю, что стек LAMP готов к работе в большинстве общих доменов, но я совершенно не знаю, как мне заставить PHP (Laravel) и мой узел nodeJS работать вместе.
Вещи, которые я пробовал:
решение прост (но найти НИКОГДА об этом в Интернете не было). Вам просто нужно включить ваш файл socket.io JS в HTML-представление PHP, затем файлы сокета socket.io JS подключаются к вашему узлу. JS-сервер. Это отлично работает на localhost. Однако, если кто-то еще пытается войти в ваш чат извне, они будут испытывать ошибку «Запретный запрос на кроссдомен», потому что вы, вероятно, следовали за каким-то «руководством», как я, и ваше соединение socket.io в КЛИЕНТЕ :
var socket = io.connect('localhost:8080');
вместо
var baseURL = getBaseURL(); // Call function to determine it var socketIOPort = 8080; var socketIOLocation = baseURL + socketIOPort; // Build Socket.IO location var socket = io.connect(socketIOLocation); // Build the user-specific path to the socket.io server, so it works both on 'localhost' and a 'real domain' function getBaseURL() { baseURL = location.protocol + "//" + location.hostname + ":" + location.port; return baseURL; }
Код клиента PHP:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> </head> <body> <!-- Wrapper--> <div id="wrapper"> <!-- Chat: Input --> <div id="chat-input"> <!-- Username --> <div class="username"> <p id="username">John Doe</p> </div> <!-- Form --> <form action=""> <!-- Input field --> <input type="text" class="chat_input-message" id="message" placeholder="Enter your message..." autocomplete="off" autofocus="on" /> <!-- Button --> <button>Send</button> </form> <!-- END: Form --> </div> <!-- END Chat: Input --> <div id="chat-output"> <div id="messages"></div> </div> </div> <!-- END: Wrapper --> <!-- Scripts --> <!-- Socket.IO --> <script src="../node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script> <!-- jQuery --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <!-- Chat --> <script src="../public/js/chat.js"></script> <!-- End: Scripts --> </body> </html>
Код узла node.JS на стороне сервера не нуждается ни в каких настройках, забыть все о Redis или PHP (Elephant.IO, AJAX случайные инъекции, забыть о любых хаках). Он просто работает как волшебство.