Ответ 1
решение прост (но найти НИКОГДА об этом в Интернете не было). Вам просто нужно включить файл socket.io JS в HTML-представление PHP, тогда файлы сокета socket.io JS подключаются к вашему серверу node.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 случайные инъекции, забыть о любых хаках). Он просто работает как волшебство.