我将开发一个实时帮助聊天系统,其基本功能类似于http://www.providesupport.com和http://www.liveperson.com/。
我不知道如何构造这个应用程序。我想有一个基于网络的聊天脚本的最终用户,以与我们的支持人员谁将使用管理控制台管理不同的聊天。我计划使用PHP/JavaScript/AJAX组合来实现最终用户chat和Java来构建管理面板。还将有一个MySQL数据库来存储设置/聊天等。
我想要包含的关键特性是:-支持多个并发聊天-多个操作员-在操作员之间传输聊天-“用户正在键入”通知-将每一次聊天记录到数据库-联机/脱机模式。
我已经为系统的基本架构提出了三种可能的方法,特别是聊天元素是如何工作的。我不知道哪种方法最好,我希望你能指出正确的方向,指出我错过的任何优点/缺点。
方法1-用于聊天的静态HTML文件
PHP用户聊天框写入并从包含聊天的HTML文件中读取。然后每隔几秒钟重新加载该文件,以确保显示更新。Java管理端也会执行类似的操作。
优点:-整个消息都被记录下来。-操作员可以通过加载不同的HTML文件来管理不同的聊天--不同的操作员可以加载相同的聊天,从而允许用户的传输
缺点-用户正在键入通知需要一些单独的方法。
方法2-存储聊天的MySQL数据库
当输入每一条新消息时,聊天将被写入MySQL数据库。管理端和用户端将每隔几秒钟检查一次数据库中的更新,如果发生了这种情况,则重新加载聊天窗口。
优点:-当每条消息存储在DB中时,所有消息都会被记录下来。-操作员可以通过不同的SQL查询管理不同的聊天--不同的操作员可以加载相同的聊天,从而允许用户的传输
缺点:-用户正在键入通知将需要一些单独的方法--数据库将变得非常大--不断地查询数据库可能会有较高的服务器负载,并且随着一个大表的出现而变得缓慢。
方法3-直接套接字连接
PHP端有一个直接连接到他们正在交谈的Java管理客户机的套接字连接。所有的聊天数据都经过这个过程,当聊天完成后,它被写到要存储的数据库中。
优点:-快速,因为每一方都会知道何时收到新消息??“用户正在键入”消息可以通过套接字连接发送--数据将被记录下来。
缺点:-套接字连接可能丢失,因此结束聊天。-不确定运营商之间的聊天将如何工作
摘要
那么,总结一下,哪种方法最好呢?有没有更好的方法是我没有想到的?我看过HTML5网络套接字,但我需要一个良好的浏览器兼容性。
此外,根据管理员用户是否登录,我如何实现在线/离线指示符?
我是想要一个更通用的概述,而不是代码等等?
谢谢你的帮助。
发布于 2012-06-30 02:46:12
为了获得真正的跨浏览器套接字,您考虑过socket.io吗?
否则,您可以使用已经为此开发的东西,而不是重新发明轮子,比如已经存在的XMPP库。
如果您想自己实现内容,最好的方法是ajax长轮询,不要经常重新加载页面,而是提供某种webservice,并使用JS (或jQuery)与其通信,并且只传输与聊天相关的数据。
https://stackoverflow.com/questions/11271003
复制相似问题