在Web浏览器中实现聊天系统

时间:2010-02-01 08:46:33

标签: .net php python ruby-on-rails

我们希望基于网络的应用程序能够跟踪问题,知识管理和聊天系统。用户登录后,用户可以与服务工程师聊天。

我们将在浏览器中使用Ajax进行聊天。但是服务器端我们不确定如何实现聊天?必须保存聊天记录以进行横向查看。当有人开始聊天时,系统必须找到可用的服务工程师,他将开始与客户接口。

在网络中处理聊天系统的更好方法是什么?我们可以使用Python,PHP,Ruby / Rails,Grails或.NET

我们可以使用可用的系统,我们需要更好的接口/ api到可用的系统,以便它可以集成到我们的应用程序中。

3 个答案:

答案 0 :(得分:4)

喔。如果我必须实现这样的东西,我会采用XMPP(Jabber)服务器。为什么要重新发明?

有两个服务器非常稳定且功能丰富:ejabberd(在Erlang中实现)和OpenFire(在Java中实现)。我个人更喜欢OpenFire,因为它更容易配置,如果你想扩展它的功能,Java开发人员更容易找到......但这是一个品味问题。

对于Web客户端,有一种名为BOSH的技术。它允许您不每隔X秒轮询一次请求服务器,但会在消息可用时立即接收消息。 BOSH是XMPP标准的一部分。有一个名为Strophe JS的JavaScript库,可让您轻松地在网页上使用BOSH。有example implementation

此外,您的东西可能对桌面IM客户端而不是基于Web的客户更满意。如果您使用XMPP,则可以使用任何具有Jabber支持的现有IM客户端自动获得连接服务的功能。

要获得提及的功能以选择可用的服务工程师,您可以实现小服务器插件而不是整个服务器。历史记录可在两台服务器中配置。

最后,我的观点是:采用已经编写并经过验证的XMPP服务器,其BOSH使用Strophe JS和一个小插件来选择免费服务工程师。

答案 1 :(得分:2)

我们运行名为OpenFire的XMPP(jabber)服务器,该服务器具有名为FastPath的网络聊天扩展。一个缺点是它迫使我们所有人使用相同的客户端(Spark)或冒险到达非Spark客户端的聊天请求消失。但它非常可定制,您可以捕获任何活动和统计数据。

答案 2 :(得分:1)

你考虑过使用Erlang吗?它可能需要很少的工作才能开始。

我不知道你想要什么的完整系统,但是Erlang是very easy to learn并且有an example of a chat server你可以根据自己的需要进行修改。

显然首先要与作者明确。