Web Chat应用程序 - 如何正确保存数据?

时间:2015-02-25 10:12:27

标签: websocket signalr chat

我们目前正在实施一个简单的聊天应用,允许用户创建对话和交换消息。

我们的基本设置包括前端的AngularJS和后端的SignalR集线器。它的工作原理如下:

  1. 客户端应用程序打开与我们的实时服务(基于SignalR)的Websockets连接并订阅聊天更新
  2. 用户开始发送消息。对于每条新消息,客户端应用程序都会调用HTTP API来发送它
  3. API将消息存储在数据库中,并通知我们的实时服务有新消息
  4. 实时服务通过Websockets将消息推送到订阅的客户端
  5. 但是,我们注意到为每条新消息打开这么多HTTP连接可能不是一个好主意,所以我们想知道是否应该使用Websockets来发送和接收消息?

    新设置如下所示:

    1. 客户端应用程序打开具有实时服务的Websockets连接
    2. 用户开始发送消息。客户端应用程序使用Websockets将消息推送到实时服务
    3. 实时服务接收消息,通知我们需要存储的持久性服务,然后将消息传递给其他订阅的客户端
    4. 持久性服务存储消息
    5. 在设置高效且高性能的聊天系统时,哪些选项更为典型?谢谢!

1 个答案:

答案 0 :(得分:1)

您不需要使用其他http或Web API来保留邮件。将其保留在正在广播消息的hub方法中。您可以在集线器中使用异步方法,创建异步任务以保存消息。

使用不同的持久性API然后将signalr调用为broadcase并不高效,为什么要公开所有的努力呢?