【问题标题】:Implementing PHP chat in members site在会员站点中实现 PHP 聊天
【发布时间】:2010-10-16 07:22:02
【问题描述】:

我有一个想要添加聊天功能的会员网站(专用框中的 LAMP)。不需要太复杂,但必须使用已登录会员的用户名进行聊天。

这对我来说是一个小项目,所以如果可能的话,我宁愿不从头开始编写它,并且现有的脚本或类将是理想的。我做了一些搜索,似乎确实倾向于 JSON/Ajax,但我找不到任何确定的东西。

任何提示/指针?

【问题讨论】:

    标签: php chat lamp


    【解决方案1】:

    使用 AJAX 将聊天帖子发送到服务器并定期将更改加载到聊天框(Prototype 有一个很好的功能来执行此操作,它将检查服务器是否有更新的数据(ajax 定期更新程序))。根据您的“不那么复杂”的规范,这几乎是最基本的。

    哦,是的,如果您希望将聊天消息保存在数据库中,请确保确保保护自己免受 SQL 注入。

    【讨论】:

      【解决方案2】:

      构建基于网站的聊天系统通常采用三种方法。

      1. Java 小程序解决方案 - 查找或构建与聊天服务器通信的 Java 小程序。小程序可以是 IRC 客户端,也可以是带有自定义服务器的定制聊天客户端。我什至见过一些网站使用 Java 小程序作为通信前端,其中界面全部由浏览器中的 Javascript 和 HTML 运行,但 Javascript 发送和接受来自小程序的事件以运行聊天。

      2. AJAX Post/Poll - 每次用户写入消息时,将消息发送到 HTTP 服务器,所有连接的用户都会定期轮询新消息。

      3. Comet - 主要使用 Javascript,每个客户端与 HTTP 服务器建立长期连接,然后空闲。当从用户发送消息时,它是通过已经预先存在的连接发送的。而不是轮询他们,来自其他用户的新消息只是沿着同一个连接流动。

      就个人而言,我发现第 3 个选项是最令人兴奋的,但也是最复杂的。您可能需要构建自己的 HTTP 服务器版本来支持 Comet 所需的长期连接。而且由于 TCP/IP 中的套接字描述符有 16 位限制,因此您的服务器上的每个 IP 将被限制为大约 64K 套接字。 (请记住,每个客户端都需要一个打开的套接字!)最后,构建 Comet 客户端代码的技术在浏览器之间存在很大差异。有一些框架可以做到这一点,但你必须在新浏览器出现时维护它们。

      如果您正在运行一个小型网站,并且想要面对一个可以克服的挑战,那么就使用 AJAX 轮询。这很有趣,不会太难,而且你会学到很多东西。如果您不介意,那就找一个 Java 小程序。一旦配置了匹配的服务器,您就不必担心维护它,因为该解决方案与客户端非常无关。当然,它需要在客户端上安装 Java 运行时环境,但并不总是如此……

      【讨论】:

        【解决方案3】:

        这里有两个项目可能会对您有所帮助(均基于 AJAX/JSON):

        • jQuery Ajax Chat plugin - 一个简单、轻量级的 jQuery 插件。没有花里胡哨,但它可以完成工作。

        • Ajax IM - 一个成熟的网络应用程序,它试图模拟桌面 IM 客户端所期望的所有功能。相当大的下载大小(324KB 压缩)。

        我目前在我的一个项目中使用第一个作为基本 IM 系统。我能够使用每个用户的系统凭据来实现它(因为他们已经登录到系统 - 而不是让他们选择自己的昵称)。该示例包括由 AJAX 轮询的脚本的 PHP 源代码。效果很好。

        【讨论】:

        • 感谢 Andrew,这些正是我所希望的指针。第一个尤其看起来正是我所需要的。
        • 我开始实现一个类似的东西,最终一切都是手工滚动的(但仍然使用 jQuery 来操作 DOM)。我需要在 Drupal 之上构建它,我发现经过一周的工作后我有了一个基本的聊天......但它只能同时维持 10-20 个用户。您可以在服务器上维护多少用户? 〜10? 〜100? 〜1000?
        猜你喜欢
        • 1970-01-01
        • 2023-04-06
        • 2010-10-31
        • 2016-02-17
        • 2012-05-09
        • 2011-06-01
        • 1970-01-01
        • 2015-05-17
        • 2017-06-26
        相关资源
        最近更新 更多