目前我有一个通过Laravel框架在
PHP上写的网站.我已经用Socket.IO和Express的nodeJS写了一个实时聊天,现在我想做的是把它整合到我已经写的Laravel网站上.问题是聊天必须在主页面,目前由Laravel的观点呈现.目前我正在共享主机.
问题:
您对此类整合的最佳建议是什么?我知道LAMP堆栈在大多数共享域中准备就绪,但我完全不知道如何让PHP(Laravel)和我的nodeJS聊天一起工作.
我试过的事情
> Elephant.IO – 没有任何大的成功它…
解决方案很简单(但是在互联网上找不到任何东西).您只需要在PHP的HTML视图中包含您的socket.io JS文件,然后将socket.io JS文件连接到您的node.JS服务器.这在本地主机上工作得很好.但是,如果有人尝试从外部登录聊天,他们将遇到一个“禁止的跨域请求”错误,这是因为您可能遵循像我这样的“指南”,并且您在CLIENT中的socket.io连接就是这样:
原文链接:https://www.f2er.com/laravel/131709.htmlvar 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; }
<!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随机注入,忘记任何黑客).它只是作为一个魔术.