【问题标题】:Chatting and file sharing using C# in Asp.Net Webforms在 Asp.Net Webforms 中使用 C# 聊天和文件共享
【发布时间】:2013-05-30 16:44:43
【问题描述】:

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

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

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

希望你明白我的意思。

问题:

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

2) 如何告诉一个用户另一个用户正在输入?

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

感谢您的指导。

【问题讨论】:

  • 您希望同时拥有多少用户?
  • 你的上市时间是什么时候?
  • 您愿意使用商业 API 和公共网络吗?
  • 介意将我的答案标记为正确吗?

标签: c# asp.net webforms chat file-transfer


【解决方案1】:

对于基于网络的实时聊天,当前的开源标准持有者似乎是SignalR

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

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

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

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

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

【讨论】:

    【解决方案2】:

    你看过SignalR吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      相关资源
      最近更新 更多