相关疑难解决方法(0)

如何正确处理聊天消息应用程序的"读取" - "未读"状态?

我目前正在开发一个使用socket.io提供聊天室功能的react-native应用程序

我目前愿意处理消息上的未读/读状态,但我不知道这个逻辑应该存在于何处:在客户端代码中还是在服务器端?

这是我的代码组件的基本实现

<ChatRoomCard /> //-> displays the last message and the chatroom title and 
                    can navigate to the ChatRoom component
<ChatRoom id={} />
Run Code Online (Sandbox Code Playgroud)

我的reduxState是这样的:

{
  chatRooms: [{chatRoomId: '', title: ''}],
  chatRoomsMessages: {
           [chatRoomId]: [{messageId: '', text: ''}]
     }
}
Run Code Online (Sandbox Code Playgroud)

每个组件都连接到redux,ChatRoomCard接收chatRooms包含对象数组``{{chatroomId:''}] 的props,而ChatRoom组件只接收相应的消息.

如果它在客户端,我的第一次尝试是向lastRead : timestamp每个ChatRoomCard 添加一个状态,每次ChatRoom组件安装时这个状态都会更新,从而显示最后的消息.

所以现在当socket io事件'new msg'触发并且我收到新消息时,我可以在ChatRoomCard组件中映射消息,将message.createdAt时间戳与ChatRoomCard.lastReadTimestamp进行比较,并在每当一个时增加'未读消息计数' message.timestamp位于lastReadTimestamp之后.

这个解决方案听起来不错吗?或者这个逻辑属于后端?或者也许两者兼而有之?我有点失落,因为这是我第一次这样做

非常感谢

javascript socket.io reactjs react-native redux

1
推荐指数
1
解决办法
1957
查看次数

标签 统计

javascript ×1

react-native ×1

reactjs ×1

redux ×1

socket.io ×1