0

我有一个会员网站,我想将聊天添加到(专用盒子上的 LAMP)。它不需要太复杂,但必须使用已经登录的成员的用户名进行聊天。

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

任何提示/指针?

4

3 回答 3

3

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

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

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

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

于 2009-03-30T05:21:00.670 回答
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 运行时环境,但这并不总是正确的......

于 2009-03-30T04:54:34.710 回答
1

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

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

于 2009-03-30T03:56:03.353 回答