我正在用socket.io
编写一个聊天应用程序(本机)。聊天用户属于一个房间,并且一个房间中有许多用户。大多数情况下,一个房间里有几到几十个用户。当有一个新的聊天室消息发布到服务器上的一个房间时,可以将该聊天消息插入到一个房间中的用户,或者可以将一条简短的标准消息插入到房间中的用户,要求他们从服务器中拉出并进行更新。 。我能想到的第三种方法是将消息推送给用户(需要推送通知支持。我们可以说它可用)。我不确定这些更新方法的优缺点。除了上述3种以外,还有其他更新方式吗?
答案 0 :(得分:1)
我实际上只是使用React和Socket.io创建了一个生产中的应用程序,用于在用户向特定对话发送消息时将消息推送给特定房间中的用户。我之所以没有使用推送通知,是因为我正在构建一个Web应用程序而不是一个移动应用程序,但是您提到的推送通知在逻辑上相当于将消息信息直接发送给会议室中的所有用户的移动设备。就我当时考虑的可用选项而言,我认为您已经涵盖了上面所有的可用选项。
如上所述,这两种方法都有其优缺点(将整个消息直接发送给所有用户或向所有用户发送一条小通知以检索所有最新消息)。前者的优点是,该消息只是立即发送给所有用户,因此他们收到消息的速度比后者要快得多。但是,如果您以某种方式使用Socket.io,例如,您以易变的方式向所有用户发送消息,则前一种情况的缺点是客户端用户可能由于网络而无法收到消息打ic,发送的消息将不会出现在他们的对话消息中。同样,直接发送所有消息信息并不能使客户端应用程序控制何时接收所有消息数据。另一方面,后一种情况的优点是,在对话中仅向所有用户发送一条小消息,从而节省了传输数据的大小,然后这些用户可以随意查询最新消息。客户应用程序认为合适。这种情况下的缺点是实际发送的消息不会立即到达客户端应用程序,从而增加了消息发送和接收之间的延迟。但是,如果没有在两个单独的设备上并排打开两个客户端应用程序并且没有人用秒表观看以检查延迟时间,那么这样的事情当然很难被注意到。
总而言之,我相信您已经在上面列出了所有选项。现在,根据这些方案的优缺点,您可以根据自己的情况决定适合您的应用方案的情况。