1

NET 基于 Web 表单的 C# 应用程序。我需要在应用程序中添加一个模块,该模块允许登录用户之间聊天,并且用户可以在聊天期间共享文件,例如 Skype。同时,我必须在我的服务器上保存会话期间传输的每个对话单词和文件的永久记录。我对实现所需结果的模块有一点想法,但我确信这不是一个好习惯。这是我的想法:

聊天:当用户聊天时,创建一个包含发送者 ID、接收者 ID 和消息内容的数据表。当用户按下发送按钮或按 Enter 键时,将在数据表中插入一个新行,其中包含 ID 和消息内容,然后数据表将绑定到 div 等,以向两个用户显示更新的消息。最后,在事件(如窗口关闭等)上,数据表将被转换为 XML,并且 XML 文件将永久存储在硬盘或数据库中。

文件传输:在聊天过程中,每当用户按下回车/发送按钮时,我们都会检查消息内容,如果发送的消息是文件(带有一些扩展名),则将文件上传到服务器并提供下载链接给接收者。

我希望你明白我的意思。

问题:

1)我想异步共享文件,即传输到接收器并同时保存在服务器上。可能吗?

2)如何告诉一个用户另一个用户正在打字?

有没有更好的方法来实现这个模块?我应该具备什么样的知识才能正确理解和实施该模块?

感谢您的任何指导。

4

2 回答 2

3

对于基于 Web 的实时聊天,当前的开源标准承载者似乎是SignalR

这里有很多关于该产品的讨论,这些讨论应该有助于您朝着正确的方向前进。

就存储而言,这将取决于您可用的基础架构以及您愿意为构建系统而产生的成本。

您可能会考虑使用RabbitMQ进行消息传递,如果您设置得当,您可以附加队列侦听器,该侦听器还将根据需要执行聊天记录。(已经有可用于 RabbitMQ 的有据可查的 .NET/C# 客户端。)您可能还想查看RabbitMQ 的 Wikipedia 页面

文件传输可能最好通过将文件上传到网络服务器和临时存储来完成,其中包含指向要由其他​​聊天客户端下载的文件的链接。但是,这会导致服务器增加其带宽需求。

您还可以考虑运行自己的XMPP 服务器并通过 SignalR 使用 Web 界面来连接XMPP 服务器。它可能会利用最多的功能来缩短上市时间。

于 2013-05-30T16:57:46.887 回答
0

你看过SignalR吗?

于 2013-05-30T16:57:18.070 回答