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

标签 javascript autobahn crossbar wamp-protocol

我喜欢 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. 我找不到用于设置 here 中提到的功能的 Javascript 文档。在哪里可以找到它?

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

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

  6. 您能详细解释一下 Event History 特性吗?以及如何配置它?

最佳答案

我会一一回答你的问题:

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

    • 有两种验证方式,匿名和 WAMP-CRA。然后,您为匿名连接的客户端分配一个 Angular 色,为经过身份验证的客户端分配另一个 Angular 色(该 Angular 色可以根据数据库而有所不同,例如:用户、管理员、版主……)
    • 通过身份验证后,订阅主题需要授权(由动态授权者实现,您可以在此处查看如何操作: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)。

我知道由于文档的缘故,高速公路有时很难遵循,但示例可以提供很多帮助,这里有很多有趣的东西:https://github.com/crossbario/crossbarexamples (包括身份验证、MetaAPI、模式)。

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

关于javascript - 如何为动态聊天室配置 Autobahn(crossbar.io)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076754/

相关文章:

javascript - OrbitControls.js - 无法读取未定义的属性 'prototype'

javascript - 单击内部复选框时使用 jQuery 添加类以包含 li

python - 高速公路网络套接字超时后如何重新连接?

node.js - 在高速公路 onclose 事件后重新连接

python - 如何使用 Autobahn Python 和 Twisted Reconnecting ClientFactory 重新注册在重新连接后调用的 WAMP?

javascript - 以编程方式启动 crossbar.io

javascript - IE11 中的中止 Controller 不起作用。任何方式来支持它

javascript - Gwt 和 native html 互玩

python - 在 crossbar autobahn 上订阅 python 主题

javascript - Sinon.js spy.called 不适用于 RPC