[英]nodeJS and PHP (Laravel) integration for Socket.IO live chat
目前我有一個我通過Laravel框架在PHP上編寫的網站。 我使用帶有Socket.IO和Express的 nodeJS編寫了一個實時聊天,現在我要做的就是將它集成到我已經寫好的Laravel網站中。 問題是聊天必須在主頁面中,目前由Laravel的視圖呈現。 目前我在共享主機上。
問題:對於這種整合,您最好的建議是什么? 我知道LAMP堆棧在大多數共享域中都已准備就緒,但我完全不知道如何讓PHP(Laravel)和我的nodeJS聊天一起工作。
我嘗試過的事情:
解決方案很簡單(但在互聯網上找不到任何關於它的東西)。 您只需要在PHP的HTML視圖中包含socket.io JS文件,然后socket.io JS文件與您的node.JS服務器建立連接。 這在localhost上運行良好。 但是,如果其他人嘗試從外部登錄您的聊天,他們將遇到“禁止跨域請求”錯誤,這是因為您可能跟着像我一樣的“指南”,而您在CLIENT中的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隨機注入,忘記任何黑客攻擊)。 它只是作為一種魔力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.