WebSocket与SSE在React/Node上实现真实的好友邀请系统

yk9xbfzb  于 2023-01-25  发布在  Node.js
关注(0)|答案(2)|浏览(280)

我想实现一个系统,允许用户互相添加为朋友,并在他们之间共享数据。我已经完成了身份验证,目前正在研究如何做到这一点的实时。这个项目的我纯粹是一个学习经验,所以我正在寻找许多方法来执行这项任务,以增长我的知识。
我在以前的项目中使用过Websockets,它很容易使用。Websockets似乎是解决我的问题的最佳方案,因为它允许用户通过打开的套接字发送和接收邀请。然而,我也了解到它的缺点是长时间打开套接字连接,可能会对性能造成潜在的影响(?)由于我只在发送/接收邀请时才发送/接收信息,因此websockets可能被过度用于一个简单的功能。
同时,我想了解新技术,我发现服务器发送事件将是性能较低的(?)使用SSE将是非常有效的,因为它只发送HTTP请求到客户端/服务器每当用户发送邀请。
请纠正我,如果我打错了以上,因为这是我通过我的在线阅读收集。所以现在我很难理解是否SSE是优于WebSocket为我的项目。如果有其他技术,请让我知道太!谢谢

nfeuvbwi

nfeuvbwi1#

你好吗?
最好的建议是在这种情况下总是使用websocket,因为你的项目可能会增长,需要一些特性,这将是更好地使用websocket
但是你还有另一个选择,其中一个是Firebase,是的,Firebase!你可以用Firebase做一个很好的React式应用程序,因为它的观察者实时更新数据,就像Websocket一样。
但这里有一些利弊。

  • Websocket:可以使您的项目可扩展,它更完整,您可以在任何上下文中使用它,但是:难以实现并且需要更多的时间来学习和理解。
  • Firebase,简单快速的实现,你可以在20分钟内聊天,肯定会帮助你解决你的问题,有Firestore和Realtime数据库..甚至Firestore实时更新..但是:在一个大项目中,Firebase的成本可能很高,我认为这不是一个大项目的好选择。

这就是它...更好的选择做一个实时数据应用程序给我。
关于. Firebase与Websocket https://ably.com/compare/firebase-vs-socketio的更多信息

m0rkklqb

m0rkklqb2#

发送好友邀请只需要发送一个API请求,WebSocket用于真实的通信,从react.js中获取邮件并发送到服务器

export const sendFriendInvitation = async (data) => {
  try {
    return axios.post("/friend-invitation", data);
  } catch (exception) {
    console.error(error)
  }
};

在node.js端,编写一个控制器来控制此请求:

const invitationRequest = async (req, res) => {
  // get the email 
  const { targetMail } = req.body;
  
  // write code to handle that same person is not sending req to himself

  // get the details of user who sent the email
  const targetUser = await User.findOne({
    mail: targetMail.toLowerCase(),
  });
  if (!targetUser) {
    return res
      .status(404)
      .send("send error message");
  }

  // you should have Invitations model
  // check if invitation already sent. 
  
  // check if the user we would like to invite is our friend
  
  // now create a new invitation
 
  // if invitation has been successfully created, update the user's friend
  
  return res.status(201).send("Invitation has been sent");
};

相关问题