c# - 如何构建 Web/客户端支持聊天系统

标签 c# chat data-transfer

我希望为我们公司的一个站点构建一个在线客户支持系统,并且对结构有一些疑问。

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

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

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

我最初的想法是让 Web 端将聊天记录存储在 SQL 数据库中,然后以某种方式“Ping”相关桌面客户端,告诉它更新其聊天记录。对于桌面到网络也是如此。但我不确定如何在两个不同的平台之间实现这一点。如果它是桌面客户端到桌面客户端,我想它会容易得多,但事实并非如此。

另外,请记住,我知道已经有商业应用程序可以做到这一点。然而,我们需要一些超出简单聊天的定制功能 - 不值得深入探讨细节,但基本上我们必须实现我们自己的解决方案。

非常感谢任何帮助。

最佳答案

Web 技术不是实现实时交互的合适平台。当然可以,但是您肯定会遇到可伸缩性、响应能力和开发工作方面的问题。我敦促您非常仔细地检查您的要求,并考虑是否完全有可能利用供应商的产品来完成您想要做的事情。

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

您可以轮询 Web 服务器以获取新消息,但这不是一个可扩展的解决方案。如果您只处理非常少(比如个位数)的用户,那么这可能会奏效,但您的响应速度将受到轮询速度的限制,并且轮询速度越快,此解决方案的可扩展性就越差是。

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

关于c# - 如何构建 Web/客户端支持聊天系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347198/

相关文章:

c# - 如何使用 NewtonSoft Json.Net 将 Json 字典反序列化为平面类

ios - 使用 Watch 连接框架将数据从 iPhone 传输到 iWatch

c# - 从客户端向服务器发送数据有效,但服务器至客户端不起作用

javascript - 如何通过 Web-Workers 传递自定义类实例?

java - RMI 上的大字节数组

c# - 为什么我不能使用此模式删除 "[restr=戸]"

c# - 如何独立获得每个属性的不同值

c# - 没有实现 UoW 或存储库的 EF 是否正确?

architecture - 网络到应用程序视频聊天的最佳技术?

android - Android 聊天消息的可排序唯一 ID