我正在尝试找到在整个会话过程中将聊天消息存储在前端的最佳方法。给定我正在使用套接字io,当用户A脱机时从用户B向用户A发送消息时,也使用脱机消息传递。我当前如何配置UI,是当用户想要与朋友聊天时(当他们单击用户名时,该聊天窗口是可见的),单击用户名(认为是facebook),接下来显示的是一个底页,其中应包含该聊天会话。底页是一个单独的组件。
我从不同的角度思考了这个问题,我认为这是我应该权衡的观点。我曾经考虑过在用户打开聊天底表时仅执行GET请求(这可能真的很慢!),并且破坏了实时通信的目的,使套接字无用。我还考虑过将所有聊天对象都保留在LocalStorage中,最后,只是将所有对话都保留在包含聊天对象的全局数组中。
getMessages(socket) {
let observable = new Observable(observer => {
socket.on('incoming', (data) => {
observer.next(data);
});
return () => {
this.socket.disconnect();
};
})
return observable;
}
我们可以看到我的服务中有一个可观察的物体;在我的组件代码中,我目前已对此进行了订阅-效果很好;没有问题-问题来了,下一步呢?鉴于我有一个聊天底部工作表,并且我希望此消息历史记录显示在工作表中,供我单击的用户使用
实际: 目前没有任何反应,但到目前为止,我能够成功获得消息。我只是在控制台中注销消息
已执行: 我在侧栏上单击用户名Bob,弹出底部表单,现在我可以看到当天与Bob的聊天记录,并且可以看到与Bob聊天时可能出现的新消息。