【问题标题】:Online chat solution for Asp.Net MVC 5.1 websiteAsp.Net MVC 5.1 网站在线聊天解决方案
【发布时间】:2014-06-18 21:45:30
【问题描述】:

我有一个 Asp.Net MVC 5.1 网站。我们有 3 种类型的用户,我想添加对其中一种类型的聊天的支持。我想到了一些这样的模型:

public class Conversation
{
    public NormalUser A { get; set; }
    public NormalUser B { get; set; }
    public List<PrivateMessaage> Messages { get; set; }
}

public class PrivateMessaage
{
    public NormalUser Sender { get; set; }
    public NormalUser Receiver { get; set; }
    public string Message { get; set; }
    public DateTime Created { get; set; }
}

另外,我在项目的其他部分使用 SignalR,我认为在 SignalR 之上添加聊天界面是一个非常好的解决方案。到目前为止一切看起来都不错。但是,我认为每次键入消息时都在数据库中插入新消息并不是一个好主意。我已经创建了很多策略来在我的网站中实现自定义甜甜圈缓存,以使每个页面都尽可能快,看起来这会取消所有这些!这个问题的首选解决方案是什么?我想我可能会采取一些类似的方法:

  • 批量推送到数据库。例如,一旦消息超过阈值(其日期/时间差大于 X 或消息计数大于 Y)。
  • 不支持离线消息,只是通过 SignalR 将它们在内存中推送到另一端。
  • 同2,但支持目标用户离线时离线。我想不会有多少消息会发送给离线用户!
  • 不要缓存任何东西。我会努力的!!

第一个问题是,网站可能会出现故障(更新、电源故障、启示录(!)等)并且内存中的所有消息都会丢失。我可以添加一个自定义操作来刷新所有内容,但它从来都不是很安全。由于那里有很多聊天解决方案,我认为有非常方便的解决方案。

【问题讨论】:

  • 我投票选项一,如果事情在刷新之间死亡,我可能会丢失消息。

标签: c# asp.net asp.net-mvc signalr asp.net-mvc-5


【解决方案1】:

如果您不反对使用其他数据库,使用Firebase 和 AngularJS 进行实时聊天非常容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多