如何配置Autobahn(crossbar.io)以实现动态聊天室?

6
我很喜欢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"的聊天室。
我们需要将聊天消息存储在数据库中以供将来参考,因为Autobahn没有消息持久性。
现在我的问题是:
  1. 如果每个聊天室使用单独的主题,则如何订阅服务器上的消息(因为我们目前无法使用模式订阅)?
  2. 由于我们将为每个房间使用单独的主题,因此如何在Crossbar.io中进行身份验证和授权?
  3. 我找不到JavaScript文档来设置这里提到的功能。在哪里找到它?
  4. 在这个SO答案中,提到Crossbar.io为Router提供会话加入或离开的元事件。有没有办法知道用户订阅或取消订阅特定主题而不是 Router 加入或离开?
  5. 你能解释一下如何使用当前版本的Crossbar.io(在JavaScript、浏览器或Node.js中)配置可用的高级配置文件功能吗?
  6. 你能详细说明事件历史记录功能吗?以及如何配置它?
1个回答

3
我将逐一回答你的问题:
  1. 至少,你的客户端希望订阅他的主题(如果我误解了,请纠正),那么,你需要在数据库中存储与用户相关的主题ID列表,并且当你的客户端连接到服务器时,发送给他主题ID列表,让他订阅所有主题。
  2. 认证/授权过程与单独的主题无关。你可以像这样做:

    • 有两种身份验证方式:匿名和WAMP-CRA。然后,你为匿名连接的客户端分配一个角色,为已验证的客户端分配另一个角色(根据数据库中的情况可能不同,例如:用户、管理员、调解员等)
    • 当通过身份验证后,订阅主题需要授权(由动态授权器实现,你可以在这里查看如何实现:https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/authorization/router.py - 基本上是相同的,只是你忘了路由器的事情,而是专注于授权方法)
    • 然后,你可以基于访问控制进行授权。
  3. 不幸的是,文档已经过时了,你应该在邮件列表中询问你想要使用哪些功能以及如何使用它们。
  4. 我记得有一个元事件 on_subscribe/on_unsubscribe。
  5. 高级功能可以在 Crossbar 的配置文件中进行配置,也可以作为传递给 publish/subscribe/call/register 调用的参数。
  6. 我不是 Autobahn 的核心开发者,但据我所知,它是一种特性,可以让你从主题中获取所有之前发布过的数据(X last ones、since a TIMESTAMP、after a ID)。

我知道 Autobahn 有时由于文档而难以跟进,但示例可以大有裨益,在这里有很多有趣的东西:https://github.com/crossbario/crossbarexamples (包括身份验证、MetaAPI、模式等)。

我希望我已经回答了你的大部分问题,但如果有你不理解的事情,我建议你去邮件列表,在我看来,这是你最好的尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接