在成员站点中实现PHP聊天

时间:2009-03-30 03:43:31

标签: php chat lamp

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

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

任何提示/指示?

3 个答案:

答案 0 :(得分:3)

以下是两个可能帮助你的项目(基于AJAX / JSON):

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

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

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

答案 1 :(得分:2)

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

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

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

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

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

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

答案 2 :(得分:1)

使用AJAX将聊天帖子发送到服务器并定期加载对聊天框的更改(Prototype有一个很好的功能,可以检查服务器是否有更新的数据(ajax定期更新程序))。根据你的“不那么复杂”的规格,这几乎是一块骨头。

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