我正在寻找用于asp.net mvc web应用程序的通信系统的建议。
公司内部用户和外部用户需要能够相互发送消息。还需要发送电子邮件通知,让用户知道他们在应用程序中有一条新消息。
是否有任何现有的开源项目能够做到这一点?还是非开源的?
它不需要出现在每一页上-只是在一页上。用户需要能够向公司发送信息,我们需要能够发送用户消息。
发布于 2019-11-20 13:13:07
首先,您需要确保您有一个内部公司用户的身份验证机制。我的建议是,您可以使用身份服务器,这是开源的。
http://docs.identityserver.io/en/latest/
另一方面,如果需要限制用户权限(策略服务器),则应该有一个授权系统来控制用户权限。
对于通信系统,应该在mqtt上使用RabbitMq队列机制编写一个简单的程序。Mqtt是消息传递的有用协议。有很好的例子,您可以用于通信系统的开发。
https://github.com/MassTransit/RabbitMQ-Samples
同时,在github上找到了两个通信系统的示例代码。但我认为您应该使用RabbitMq或其他mqtt代理。对于所有用户,当用户联机时,您应该在mqtt broker上打开一个连接。要开始对话,每当用户试图向其他用户发送消息时,您应该创建一个特定的主题。然后,用户应该订阅属于会话的主题。当发送(发布)新消息时,订阅的客户端可以获得消息。这就是所谓的发布子模式。
如果没有订阅主题的客户端,您应该考虑一下。如果你的系统应该只在在线用户之间工作,你就不用做任何事情。如果系统也适用于脱机用户,则意味着用户应该获得发送给处于脱机状态的用户的消息。在这种情况下,每当用户联机时,用户都应该得到消息。因此,您需要使用类似于RabbitMq的队列机制。激活RabbitMq mqtt插件后,队列绑定到messages,并将消息发送到队列。在此之后,您需要使用队列,如果用户处于联机状态,则将使用事件通知用户。
如果您需要保存消息,您应该使用日志队列并使用它并保存消息。
示例链接:
https://github.com/RocketChat/Rocket.Chat https://github.com/gediminasgu/RabbitMqChat -警告!此代码用于消息传递演示目的,不应像环境一样在生产中使用。
https://softwarerecs.stackexchange.com/questions/24716
复制相似问题