关闭。这个问题需要更加突出重点。它目前不接受答案。**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
两年前关门了。改进这个问题我使用angular4typescript和mysql来创建一个聊天系统。我可以把消息发到我的服务器上。但是,我很难理解如何检索数据。当用户订阅聊天频道时,我不希望他/她一次收到所有聊天日志。只有最近的。我该怎么办?
insrf1ej1#
首先,您需要服务器与客户机对话,而不是http轮询。html5有服务器发送事件(sse),但有更好的方法。websockets是前进的方向。这样服务器就可以向所有客户端广播新的聊天信息。npm的socket.io是一个很好的websockets实现。此外,如果websockets在浏览器上不可用(想想蹩脚的浏览器),它会退回到http轮询,如果失败,它会对真正蹩脚的浏览器进行进一步的退回。非常高兴你,socket.io hello world应用程序是一个聊天应用程序。你可以在这里看到它并遵循简单的教程-https://socket.io/get-started/chat/您可以很容易地将socket.io集成到angular中。当客户端从服务器接收到事件时,您可以将这些事件发送给rxjs主题,任何东西都可以订阅该主题。请参阅有关使用rxjs主题进行组件间通信的信息-https://angular.io/guide/component-interaction#parent-和孩子们通过服务交流好的,这是最简单的部分。在用户加入聊天频道之前获取消息怎么样。服务器端,您应该看看消息队列。我在这里不是很有经验,但是像rabbitmq这样的技术人员是你所需要的。这应该可以做到,但是,在客户端,我还要看一下rxjs replay主题(一种不同类型的主题),它可以发出订阅之前发生的事件。提示:如果你真的想成为专业人士,你应该使用客户端的angular商店,比如ngrx。这里的免费教程往往是垃圾。我建议在udemy上投资ngrx教程。ngrx是pro的用途。
1条答案
按热度按时间insrf1ej1#
首先,您需要服务器与客户机对话,而不是http轮询。html5有服务器发送事件(sse),但有更好的方法。
websockets是前进的方向。这样服务器就可以向所有客户端广播新的聊天信息。npm的socket.io是一个很好的websockets实现。此外,如果websockets在浏览器上不可用(想想蹩脚的浏览器),它会退回到http轮询,如果失败,它会对真正蹩脚的浏览器进行进一步的退回。
非常高兴你,socket.io hello world应用程序是一个聊天应用程序。你可以在这里看到它并遵循简单的教程-https://socket.io/get-started/chat/
您可以很容易地将socket.io集成到angular中。当客户端从服务器接收到事件时,您可以将这些事件发送给rxjs主题,任何东西都可以订阅该主题。
请参阅有关使用rxjs主题进行组件间通信的信息-https://angular.io/guide/component-interaction#parent-和孩子们通过服务交流
好的,这是最简单的部分。在用户加入聊天频道之前获取消息怎么样。服务器端,您应该看看消息队列。我在这里不是很有经验,但是像rabbitmq这样的技术人员是你所需要的。这应该可以做到,但是,在客户端,我还要看一下rxjs replay主题(一种不同类型的主题),它可以发出订阅之前发生的事件。
提示:如果你真的想成为专业人士,你应该使用客户端的angular商店,比如ngrx。这里的免费教程往往是垃圾。我建议在udemy上投资ngrx教程。ngrx是pro的用途。