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

时间:2015-01-21 21:02:40

标签: javascript autobahn crossbar wamp-protocol

我喜欢crossbar.io及其运作方式(个人)。但我想知道如何使用Autobahn(Crossbar.io)为典型的动态聊天应用程序设置架构。

此处的动态聊天表示为每个网址创建了单独的聊天室。

例如: 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. 我无法找到用于设置here所述功能的Javascript文档。哪里可以找到它?

  4. In this SO answer,有人提到crossbar.io为会话加入提供元事件或离开路由器。有没有办法知道用户何时订阅或取消订阅特定的主题而不是路由器加入或离开?

  5. 您能解释如何使用当前版本的Crossbar.io(在Javascript,浏览器或Node.js中)配置可用的高级配置文件功能吗?

  6. 您能否详细解释Event History功能?以及如何配置它?

1 个答案:

答案 0 :(得分:3)

我会逐一回答你的问题:

  1. 至少,您的客户想要订阅他的主题(如果我误解了,请纠正我),然后,您需要在数据库中存储与用户相关的主题ID列表,以及当您的客户端连接到服务器时,你向他发送主题ID列表,让他订阅所有这些。
  2. 身份验证/授权过程与单独的主题无关。你可以这样做:

    • 有两种方式可以匿名进行身份验证和WAMP-CRA。然后,为匿名连接的客户端分配角色,为经过身份验证的客户端分配另一个角色(此角色可以跟随数据库不同,例如:user,admin,moderator,...)
    • 经过身份验证后,订阅主题需要授权(由动态授权者实现,您可以看到如何在那里执行:https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/authorization/router.py - 基本上,它是相同的,除了您忘记了路由器的事情而你专注于授权方法)
    • 然后,您根据访问控制等内容进行授权。
  3. 不幸的是,该文档已经过时,您应该在邮件列表中询问您要使用哪些功能以及如何使用它们。
  4. 我记得,有一个元事件on_subscribe / on_unsubscribe。
  5. 可以在Crossbar的配置文件中配置高级功能,它们也可以是传递给发布/订阅/呼叫/注册呼叫的参数。
  6. 我不是Autobahn的核心开发人员,但据我所知,这是一个让您从主题(X last )获取所有先前发布的数据的方法, 一个TIMESTAMP,之后一个ID)。
  7. 我知道由于文档的原因,高速公路有时难以遵循,但是示例可以提供很多帮助,这里有很多有趣的东西:https://github.com/crossbario/crossbarexamples(包括身份验证,MetaAPI,模式)。

    我希望我已经回答了你的大部分问题,但是,如果你有什么不明白的地方,我建议你去邮件列表,这是你最好的尝试在我看来。