2010-12-03 95 views
3

我期待为我们的公司网站之一构建在线客户支持系统,并对结构进行了一些查询。如何构建Web /客户端支持聊天系统

情况是这样的。我们希望我们网站的用户能够点击“实时聊天支持”按钮,此时他们会弹出一个窗口,试图将他们连接到我们的支持团队。

另一方面,我们的支持团队将运行桌面客户端。每当我们网站上的用户点击链接时,所有桌面客户端都会“响起”。每当支持团队成员“回答”呼叫时,其他客户端将停止振铃,并且该成员将开始与网络用户聊天。

鉴于我们的桌面客户端将使用C#.NET中的WPF进行制作,并且我们的网站是ASP.NET MVC 2,那么在两者之间建立通信的最佳方式是什么?

我最初的想法是让网络端存储在SQL数据库中的聊天,并以某种方式“ping”相关的桌面客户端,告诉它更新其聊天记录。类似的桌面到网页。但我不确定如何在两个不同的平台之间执行此操作。如果它是桌面客户端到桌面客户端,我想它会容易得多,但事实并非如此。

此外,请记住,我意识到已经有商业应用程序在那里这样做。但是,我们需要一些超出简单聊天的定制功能 - 它不值得进入具体细节,但基本上我们必须实现我们自己的解决方案。

任何帮助,非常感谢。

+0

您是否找到任何解决方案?我也在寻找相同类型的实现。你能分享你的想法吗? – 2012-07-23 11:08:05

回答

0

Web技术是实现实时交互的不当平台。当然可以这样做,但您肯定会遇到可伸缩性,响应性和开发工作方面的问题。我强烈建议您仔细检查您的需求,并考虑是否可以利用供应商产品完成您想要的工作。

如果你仍然想自己动手,你将不得不克服的主要障碍是如何将消息推送到浏览器。使用纯Web技术“从浏览器”ping“浏览器是不可能的,因为HTTP是建立在”只拉“请求/响应模型上的。服务器中的客户端之间不存在持久连接。服务器完成将页面发送到浏览器后,连接消失。

您可以轮询Web服务器的新邮件,但这不是一个可扩展的解决方案。如果你只处理一个非常小的(比如说单位数)用户,那么这可能会起作用,但是你的响应速度将受到你轮询的速度的限制,而且你轮询的速度越快,这个解决方案的可伸缩性就越差是。

更好的解决方案是使用Silverlight,Flash或浏览器中运行的其他一些胖客户端技术。然后你可以实现处理客户端之间消息路由的服务。 This article on CodeProject可能是一个很好的开始。

+3

“'使用纯Web技术从服务器Ping'浏览器是不可能的” - 这[不再是](http://en.wikipedia.org/wiki/WebSockets)。 – josh3736 2010-12-03 19:05:03