加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

nodeJS和PHP(Laravel)集成Socket.IO实时聊天

发布时间:2020-12-14 19:43:39 所属栏目:大数据 来源:网络整理
导读:目前我有一个通过Laravel框架在 PHP上写的网站.我已经用Socket.IO和Express的nodeJS写了一个实时聊天,现在我想做的是把它整合到我已经写的Laravel网站上.问题是聊天必须在主页面,目前由Laravel的观点呈现.目前我正在共享主机. 问题: 您对此类整合的最佳建议
目前我有一个通过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连接就是这样:
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随机注入,忘记任何黑客).它只是作为一个魔术.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读