1

我将开发一个基本功能类似于http://www.providesupport.comhttp://www.liveperson.com/的实时帮助聊天系统

我不确定如何构建应用程序。我想要一个基于 Web 的聊天脚本,供最终用户与我们的支持人员进行交互,他们将使用管理控制台来管理不同的聊天。我计划使用 PHP/JavaScript/AJAX 的组合来实现最终用户聊天和 Java 来构建管理面板。还将有一个 MySQL 数据库来存储设置/聊天等。

我想要包括的主要功能是: - 支持多个并发聊天 - 多个操作员 - 在操作员之间转移聊天 - “用户正在输入”通知 - 将每个聊天记录到数据库 - 在线/离线模式

我已经为系统的基本架构提出了三种可能的方法,特别是在聊天元素的工作方式方面。我不确定哪种方法最好,希望您能指出我正确的方向并指出我错过的任何优点/缺点。

方法 1 - 用于聊天的静态 HTML 文件

PHP 用户聊天框写入和读取包含聊天的 HTML 文件。然后每隔几秒钟重新加载此文件以确保显示更新。Java 管理端也会做类似的事情。

优点: - 消息全程记录。- 操作员可以通过加载不同的 HTML 文件来管理不同的聊天 - 不同的操作员可以加载相同的聊天,允许转移用户

缺点 - 用户输入通知需要一些单独的方法

方法 2 - 存储聊天记录的 MySQL 数据库

当输入每条新消息时,聊天将被写入 MySQL 数据库。然后管理员和用户端每隔几秒钟检查一次数据库中的更新,如果发生更新,则重新加载聊天窗口。

优点: - 由于每条消息都存储在 DB 中,因此会全程记录消息。- 操作员可以通过不同的 SQL 查询管理不同的聊天 - 不同的操作员可以加载相同的聊天,允许转移用户

缺点: - 用户输入通知需要一些单独的方法 - 数据库会变得非常大 - 不断查询数据库可能会导致服务器负载高,并且在使用大表时会变慢

方法 3 - 直接套接字连接

PHP Web 端有一个直接连接到他们正在与之交谈的 Java 管理客户端的套接字连接。所有的聊天数据都经过这个,然后当聊天结束后,写入数据库进行存储。

优点: - 会很快,因为各方都会知道何时收到新消息 - 可以通过套接字连接发送“用户正在键入”消息 - 记录数据

缺点: - 套接字连接可能会丢失,因此结束聊天。- 不确定操作员之间的聊天转移如何工作

概括

所以,总而言之,哪种方法最好?有没有更好的方法我没有想到?我看过 HTML5 网络套接字,但我需要一个良好的浏览器兼容性。

除此之外,如何根据管理员用户是否登录来实现在线/离线指示器?

我追求的是更通用的概述而不是代码等?

谢谢你的帮助。

4

1 回答 1

0

您是否考虑过socket.io以获得真正的跨浏览器套接字?

否则,您可以使用已经为此开发的东西,而不是重新发明轮子,例如已经存在的 XMPP JS 库。

如果你想自己实现东西,你最好的办法是ajax长轮询,不要让你的页面不断重新加载,而是提供某种网络服务,并使用JS(或jQuery)与之通信,只传输聊天-相关数据。

于 2012-06-30T02:46:12.660 回答