我喜欢crossbar.io及其工作方式(个人)。但是我想知道如何使用Autobahn(Crossbar.io)为典型的动态聊天应用程序设置体系结构。
这里的动态聊天意味着为每个URL创建单独的聊天室。
例如: http://www.myapplication.com/chat?roomId=123
,创建一个订阅主题“com.myapp.chat123” 的聊天室。
http://www.myapplication.com/chat?roomId=456
,创建一个订阅主题“com.myapp.chat456” 的聊天室。
我们需要将聊天消息存储在数据库中,以备将来引用,因为高速公路没有消息持久性。
现在我的问题是:
如果每个聊天室使用单独的主题,那么我们如何在服务器中订阅消息(因为到目前为止,我们无法使用Patterns进行订阅)? 由于我们将为每个房间使用单独的主题,因此我们如何在Crossbar.io中进行身份验证和授权? 我无法找到用于设置here所述功能的Javascript文档。在哪里找到它? In this SO answer,提到crossbar.io为 session 加入或离开提供了元事件路由器。有什么方法可以知道用户何时订阅或取消订阅特定的主题而不是路由器的加入或离开? 您能否解释一下如何使用当前版本的Crossbar.io(在Javascript,浏览器或Node.js中)配置可用的高级配置文件功能? 您能否详细介绍Event History功能?以及如何配置呢? 我将一一回答您的问题:
至少是您的客户端想要订阅他的主题(如果我误会,请纠正我),然后,您需要在数据库中存储与用户相关的主题ID列表,并且当您的客户端连接到服务器时,您向他发送主题ID列表,然后让他订阅所有ID。 身份验证/授权过程与单独的主题无关。您可以执行以下操作:
有两种身份验证方式,即匿名身份验证和WAMP-CRA。然后,您为匿名连接的客户端分配一个 Angular 色,为身份验证的客户端分配另一个 Angular 色(此 Angular 色在数据库后可能是不同的,例如:user,admin,moderator等)。在通过身份验证后,订阅主题需要授权(由动态授权者实现,您可以在此处查看操作方法:https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/authorization/router.py-基本上相同,不同之处在于您忘记了路由器内容,而是专注于authorize方法) 然后,您将基于访问控制进行授权。 不幸的是,该文档已经过时了,您应该在邮件列表中索取要使用的功能以及如何使用它们。 我记得,有一个元事件on_subscribe/on_unsubscribe。 可以在Crossbar的配置文件中配置高级功能,它们也可以是传递给发布/订阅/调用/注册调用的参数。 我不是Autobahn的核心开发人员,但是据我所知,它是一项功能,可让您从某个主题获取所有以前发布的数据(在ID之后,自TIMESTAMP起,为X个最后一个)。
我知道有时由于文档的原因,很难驾驭Autobahn,但是示例可以提供很多帮助,并且这里有很多有趣的东西:https://github.com/crossbario/crossbarexamples(包括Authentication,MetaAPI,Patterns)。
我希望我已经回答了您的大多数问题,但是,如果您不了解某些事情,建议您转到邮件列表,我认为这是您的最佳尝试。