【问题标题】:Creating a real-time chat with php and javascript使用 php 和 javascript 创建实时聊天
【发布时间】:2017-11-16 23:55:07
【问题描述】:

我的目标是从头开始创建类似于 Facebook 聊天的实时聊天。我想将所有消息存储在数据库表中(MySQL),每次用户发送新消息时,如果接收者已连接,则将向接收者的浏览器发送一个请求,然后消息将出现在聊天窗口中。

我不想让客户端检查是否为用户发送了新消息,但我希望服务器将请求发送到客户端的浏览器

我知道这可以使用 Comet 技术(我看到 this stackoverflow question)来实现,但我无法找到一个很好的指南来说明如何针对这个特定问题实现它。 p>

我想使用 php 和 javascript 以及尽可能少的额外软件或框架。

我使用 WAMPServer,我有 Windows。

如果您知道一个很好的指南或教程,或者可以提供有关如何实现我想要的任何指导,那将非常有帮助。

【问题讨论】:

  • websockets 是您正在寻找的。​​span>
  • 我认为 facebook 不使用 websockets(见here)。但如果这是一种更好的方法,我想知道我应该采取的第一步以及我应该知道什么。
  • 谁在乎两年前 Facebook 的所作所为,或者互联网上某个随机的人对 Facebook 的所作所为! websockets 是用于您正在尝试做的事情的技术。如果你用 F12 打开你的控制台,你可以在网络选项卡下查看他们是否正在使用 websockets,你可以通过 WS 过滤。

标签: javascript php mysql chat comet


【解决方案1】:

尝试使用此CppComet 开源彗星服务器。有用于 php 和其他语言的 api。 看看这个chat examplethis

【讨论】:

    【解决方案2】:

    您还可以将 Node.JS 与 PHP 一起使用。 Creating a Real-Time Chat App with PHP and Node.js

    【讨论】:

      【解决方案3】:

      我已经开发了一个不完全实时消息系统的应用程序,但它像实时一样工作。使用没有任何外部新框架/API 构建,只需使用已知和熟悉的技能来开发它:Ajax jquery、PHP、Mysql、Javascript。

      使用的逻辑是:

      1. 所有消息都将存储在数据库中,
      2. 当您加载页面时,所有消息都将从数据库中加载。
      3. 重新加载后收到新消息时,新消息必须 加载/显示而无需再次重新加载整个页面,对吗?这个做完了 使用 javaScript 和 ajax jquery。我设置了每 0.5 秒的超时时间 仅重新加载新消息并显示它们。
      4. 在我的代码中,一开始页面加载时,所有消息都会加载到 div 中 标记每个,稍后每当新消息进入数据库时​​,它将显示到 new
        div 标签。其简单且无需任何外部 API 即可工作。

      要刷新新消息并将它们放入 div 标签中,使用 ajax jquery 中的 .load(), 每 0.5 秒刷新一次 Javascript 用于设置超时。

      【讨论】:

      • 这使用一个间隔来保持聊天更新,它不是实时的。
      • 是的@VaelVictus,它不是完全实时的,只是每隔一段时间检查数据库中是否有任何新条目。我很久以前写的,很快就会更新我的答案。
      【解决方案4】:

      我不知道您的确切问题是什么,但 Websockets 就是答案!

      https://github.com/crossbario/autobahn-js

      https://github.com/voryx/Thruway

      (仅供参考,当您在 websockets 的上下文中看到 WAMP 时,他们谈论的不是 windows/apache/mysql/php)

      【讨论】:

      • 感谢您的回答。好的,答案是 websockets,但你没有像我在我的问题上提出的那样显示任何指导方针,因为我对我在网上找到的分散信息有点迷失了。我想知道的是我应该从什么开始(我需要在我的计算机上安装什么,我应该学习什么)以及如何使用 php 和 javascript 实现这些。如果您知道任何好的教程或文章,或者您可以编写一些步骤(包括如何使用您发送给我的链接中的项目),那将非常感激。
      • 我给了你一个客户端库和一个服务器端库。 (即使库请求特别禁止stackoverflow。stackoverflow.com/help/on-topic)Websockets 非常复杂,如果您期望通过stackoverflow 学习如何使用它们,您将会失望!你可以试试谷歌搜索,比如“autobahnjs getting started”
      • 好的,谢谢您的宝贵时间。我只是在寻找可以指导我理解这个极其复杂的 websocket 概念的东西。
      【解决方案5】:

      不幸的是,您无法使用 PHP 自己制作实时应用程序,您可以在 PHP 中使用 Laravel 之类的框架,并使用 laravel-websockets 之类的包并创建实时应用程序。 laravel-websockets 对于创建实时应用程序非常有用。 laravel 和 laravel websokcets 任何前端都可以做到这一点

      http://beyondco.de/docs/laravel-websockets

      https://laravel.com/docs/

      您可以使用它轻松创建任何东西,只需尝试理解 websokcets 的基本概念。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 2014-05-03
        • 2017-07-26
        相关资源
        最近更新 更多