Socket的nodeJS和PHP (Laravel)集成.我喜欢在线聊天


nodeJS and PHP (Laravel) integration for Socket.IO live chat

目前我有一个网站,我写在PHP通过Laravel框架。我用nodeJSSocket写了一个实时聊天。IOExpress,现在我想做的是将它集成到我已经编写的Laravel网站中。问题是聊天必须在主页中,目前是由Laravel的视图呈现的。目前我在一个共享主机上。

: 你对这种整合有什么最好的建议?我知道LAMP堆栈在大多数共享域都准备好了,但我完全不知道如何让PHP(Laravel)和我的nodeJS聊天一起工作。

我尝试过的事情:

  • 的大象。IO -还没有取得任何大的成功…

解决方案很简单(但在互联网上找到关于它的任何东西都不是)。你只需要包括你的插座。在PHP的HTML视图中先打开JS文件,然后打开套接字。io JS文件与node.JS服务器建立连接。这在本地主机上工作得很好。但是,如果其他人试图从外部登录到您的聊天,他们将遇到"禁止跨域请求"错误,这是因为您可能遵循了一些"指南",如我和您的套接字。客户端的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. js)的一切。IO, AJAX随机注入,忘记任何hack)。