当前位置: 首页 > 知识库问答 >
问题:

网络聊天应用程序-如何正确保存数据?

倪阳飇
2023-03-14

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

我们的基本设置涉及前端的AngularJS和后端的SignalR集线器。它的工作原理是这样的:

  1. 客户端应用程序打开与我们的实时服务(基于SignalR)的WebSocket连接并订阅聊天更新
  2. 用户开始发送消息。对于每条新消息,客户端应用程序都会调用HTTP API发送它
  3. API将消息存储在数据库中,并通知我们的实时服务有新消息
  4. 实时服务将消息通过Web套接字推送到订阅的客户端

但是,我们注意到为每条新消息打开这么多HTTP连接可能不是一个好主意,所以我们想知道是否应该使用Web套接字来发送和接收消息?

新设置如下:

  1. 客户端应用程序打开具有实时服务的Web套接字连接
  2. 用户开始发送消息。客户端应用程序使用Web套接字将消息推送到实时服务
  3. 实时服务接收消息,通知我们的持久性服务它需要存储,然后将消息传递给其他订阅的客户端
  4. 持久化服务存储消息

在设置高效且高性能的聊天系统时,这些选项中的哪一个更典型?谢谢!

共有1个答案

曾新立
2023-03-14

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

使用不同的持久性 API 然后调用 signalr 到 broadcase 效率不高,为什么要将所有工作都重复化?

 类似资料:
  • 问题内容: 如何用PHP实现真正的快速网络聊天? 有没有人想知道为什么Facebook聊天真的这么快?即使在没有WebSocket的IE中也是如此。 唯一的方法不是在JS中设置setInterval来检查新消息吗?但我感觉(Facebook聊天框)就像有即时反应。 如何用PHP实现如此伟大的事情? 问题答案: 您所描述的即时聊天通常是由一个名为“长轮询”的东西,或来达到的,如果我们谈论的AJAX,

  • 问题内容: 我想知道为数千名用户编写聊天应用程序的正确方法是什么。 我只是感到困惑,我如何才能每秒使用AJAX或更少的方法来对服务器执行ping操作,并检查MySQL中是否有新记录等,并且服务器负载可以接受。 我目前正在考虑使用jQuery,PHP和MySQL进行编码。 请指教。您的帮助将不胜感激。 问题答案: 客户端 对于需要轮询服务器的任何程序,我建议使用WebSockets。 我写了一个非常

  • 我正在使用XMPP在app引擎上编写一个聊天应用程序。我的想法是允许用户互相聊天。我可以将消息发送到google talk帐户,方法是将登录的用户删除地址的@gmail.com部分,并将其替换为@appid.appspotchat.com)。例如,如果登录的用户是bob@gmail.com,则用于发送的jid将是bob@appid.appspotchat.com)。然后,您可以将消息发送到goog

  • 现在我们已经熟悉了Socket.IO,让我们编写一个聊天应用程序,我们可以用它在不同的聊天室聊天。 我们将允许用户选择用户名并允许他们使用它们进行聊天。 首先,让我们设置我们的HTML文件来请求用户名 - <!DOCTYPE html> <html> <head> <title>Hello world</title> </head> <script src = "/s

  • 问题内容: 在我目前正在从事的项目中,我们需要开发一个Web聊天应用程序,而不是一个非常复杂的聊天,仅是一种将两个人联系起来谈论一个非常具体的话题的方式,我们不需要任何身份验证对于这两个用户之一,我们不必支持表情符号,头像或类似的东西。 一些项目成员建议我们可以通过BOSH使用XMPP,我说这就像试图用船网抓鱼,并提出了一种更简单的方法,例如简单的Ajax / MySQL网络聊天,但是我们担心性能

  • 我已经创建了一个聊天应用程序,为了完成它,我必须实现一些加密算法来保护服务器-客户端之间的消息。 我的实现是: 1.客户端创建kaypair(公钥和私钥)并将公钥发送到服务器 2.服务器获取公钥并创建用公钥加密的对称密钥 3.服务器将加密密钥发送给客户端 4.客户端使用私钥解锁对称密钥 5.客户端和服务器使用对称密钥进行通信。 这部分代码是服务器获取公钥并发送加密的对称密钥的地方 密钥加密方法: