代码之家  ›  专栏  ›  技术社区  ›  Grim Reaper

发送消息请求

  •  0
  • Grim Reaper  · 技术社区  · 6 年前

    套接字.IO Node.JS节点 Facebook's Messenger 有。我不知道如何解决这个问题。

    如果 迈克 满意的 必须先接受 的消息请求。比如说 使用连接到服务器 套接字.IO ,服务器处理他的请求。然后,Mike可以向服务器发送套接字,例如,聊天套接字,如下所示:

    socket.emit( 'chat', { // Emits the 'chat' socket to the server
        name: 'Mike', // Sets the name of the sender
        receiver: 'Jake', // Sets the name of the receiver
        message: 'Hey Jake!' // Sets the message
    } );
    

    显然,这个套接字应该被发送 如果有的话只要 已接受邮件请求。这就是问题所在。

    关于如何做到这一点,我有几个想法:

    1. socket,看看接收者是否接受了发送者的请求。当然,这意味着每次发送聊天时,我都有一个数据库查询。看来 高度地
    2. 以某种方式查询数据库一次,并允许聊天消息通过而不必每次都发出数据库查询-尽管我是

    我希望你能对这个问题提出意见。谢谢!

    2 回复  |  直到 6 年前
        1
  •  0
  •   Jagadeesh Battula    6 年前

    您提到的请求是,请求接受应该只发生一次,就像在facebook中一样,或者应该接受发送的每一条消息。

    我希望只有一次,当第一条信息被发送时。如果是这种情况,那么可以创建一个JSON文件,其中包含Jake的朋友(Jake接受的人)的数组。每当有人试图向Jake发送消息时,只需参考Jake的数组中的JSON文件,就可以查看发送者是否在数组列表中。如果是,你可以继续向杰克广播消息。如果不在数组中,则向Jake发送来自sender(Mike)的连接请求。

    因为您将消息请求存储在数据库中,所以当有人接受新的连接请求时,请更新JSON文件数组。

        2
  •  0
  •   manntsheth    6 年前

    有多种方法。

    1) 您可以完成缓存(如@PM-77-1所述),这有助于减少数据库查询的数量。Redis缓存非常容易与Node.js一起使用。因此,每当你试图检查迈克是否有杰克作为朋友,你可以首先在缓存级别检查杰克是否在迈克的朋友列表中。如果Mike的好友列表不可用,可以从db中提取一次并将其存储在缓存中以备将来使用。