在Asp中使用c#进行聊天和文件共享.净Webforms

本文关键字:聊天 文件共享 Webforms Asp | 更新日期: 2023-09-27 18:16:13

基于。NET Web-forms的c#应用程序。我需要在应用程序中添加一个模块,允许登录用户之间聊天,用户可以在聊天期间共享文件,如Skype。与此同时,我必须在我的服务器上保存会话期间传输的每一个字和文件的永久记录。我对模块的实现有一点想法,以达到预期的结果,但我确信这不是一个好的做法。这是我的想法:

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

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

我希望你明白我的意思。

问题:

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

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

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

谢谢你的指导

在Asp中使用c#进行聊天和文件共享.净Webforms

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

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

就存储而言,这将取决于您可用的基础设施和构建系统所愿意承担的成本。

你可以考虑使用RabbitMQ进行消息传递,如果你设置得当,你可以附加队列侦听器,它也会根据需要执行聊天记录。(RabbitMQ已经提供了文档完备的。net/c#客户端。)你也可以查看一下RabbitMQ的维基百科页面。

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

您也可以考虑运行自己的XMPP服务器,并通过SignalR使用web接口连接到XMPP服务器。它可以利用大多数功能来缩短上市时间。

你看过SignalR吗?