首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天程序设计

聊天程序设计
EN

Stack Overflow用户
提问于 2012-06-30 02:39:36
回答 1查看 1.4K关注 0票数 1

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

我不知道如何构造这个应用程序。我想有一个基于网络的聊天脚本的最终用户,以与我们的支持人员谁将使用管理控制台管理不同的聊天。我计划使用PHP/JavaScript/AJAX组合来实现最终用户chat和Java来构建管理面板。还将有一个MySQL数据库来存储设置/聊天等。

我想要包含的关键特性是:-支持多个并发聊天-多个操作员-在操作员之间传输聊天-“用户正在键入”通知-将每一次聊天记录到数据库-联机/脱机模式。

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

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

PHP用户聊天框写入并从包含聊天的HTML文件中读取。然后每隔几秒钟重新加载该文件,以确保显示更新。Java管理端也会执行类似的操作。

优点:-整个消息都被记录下来。-操作员可以通过加载不同的HTML文件来管理不同的聊天--不同的操作员可以加载相同的聊天,从而允许用户的传输

缺点-用户正在键入通知需要一些单独的方法。

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

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

优点:-当每条消息存储在DB中时,所有消息都会被记录下来。-操作员可以通过不同的SQL查询管理不同的聊天--不同的操作员可以加载相同的聊天,从而允许用户的传输

缺点:-用户正在键入通知将需要一些单独的方法--数据库将变得非常大--不断地查询数据库可能会有较高的服务器负载,并且随着一个大表的出现而变得缓慢。

方法3-直接套接字连接

PHP端有一个直接连接到他们正在交谈的Java管理客户机的套接字连接。所有的聊天数据都经过这个过程,当聊天完成后,它被写到要存储的数据库中。

优点:-快速,因为每一方都会知道何时收到新消息??“用户正在键入”消息可以通过套接字连接发送--数据将被记录下来。

缺点:-套接字连接可能丢失,因此结束聊天。-不确定运营商之间的聊天将如何工作

摘要

那么,总结一下,哪种方法最好呢?有没有更好的方法是我没有想到的?我看过HTML5网络套接字,但我需要一个良好的浏览器兼容性。

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

我是想要一个更通用的概述,而不是代码等等?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-30 02:46:12

为了获得真正的跨浏览器套接字,您考虑过socket.io吗?

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

如果您想自己实现内容,最好的方法是ajax长轮询,不要经常重新加载页面,而是提供某种webservice,并使用JS (或jQuery)与其通信,并且只传输与聊天相关的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11271003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档