问题标签 [autobahn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-leaks - Python 安全 websocket 内存消耗
我正在用 python 编写一个 Web 套接字服务器。我用 txws、autobahn 和 tornado 尝试了下面的方法,结果都相似。
我似乎使用安全的 websocket 消耗了大量内存,我无法弄清楚这可能发生在哪里或为什么会发生。下面是龙卷风的一个例子,但我可以在高速公路或 txws 中提供例子。
在建立了大约 10,000 个连接之后,我发现我使用 SSL 时使用了大约 700MB 的内存,而没有使用 SSL 时使用的是 43MB,除非我终止该进程,否则我永远无法取回它。似乎问题与建立的连接数量密切相关,而不是与发送的消息有关。
消费似乎独立于客户端发生(我编写了自己的客户端并尝试了其他客户端)。
安全的 websocket 真的比普通的 websocket 占用更多的内存吗?或者我的服务器代码没有正确实现它?
javascript - 使用 AutobahnJS 的对称 RPC
在 Websocket 上使用 WAMP,带有 AutobahnPy 服务器和 AutobahnJS 客户端。我想从服务器端调用客户端的PRC方法,即。我希望我的 RPC 是对称的。有一个对称 RPC 的例子,但双方都是用 Python 实现的。
是否可以使用 Javascript 客户端来实现?浏览文档和源代码,我找不到与registerForRpc
function等效的 Javascript 。
android - Android 应用程序在 Tornado 3.1 中引发异常。适用于龙卷风 2.1
我正在开发一个与 Web 服务器通信并需要来自服务器的推送通知的 Android 应用程序。
此应用程序成功运行并按预期使用 Tornado 2.1 作为 Web 服务器并在 Android 客户端应用程序中使用 weberknecht websockets。
但是,在 Tornado 3.1 中,当我尝试调用“websocket.connect()”方法时,同一个应用程序总是返回异常。
Tornado 3.1 客户端应用程序中的异常:-
连接失败:未知状态码 426 导致 WebSocketException (id=830032153816)
我在 stackoverflow 上读到 weberknecht 可能与最新的 Tornado 3.1 不兼容。因此,我搬到了 Autobahn web socket。但是,如果我导入高速公路 websocket jar,应用程序会在“连接”方法处崩溃。我也试过 jwebsocket 客户端。我也面临同样的问题。
我的代码中是否缺少某些内容?weberknecht 与 Tornado 3.1 不兼容吗?我有哪些使用 Tornado 3.1 的替代方案?或者我应该继续使用 Tornado 2.1 吗?
我的申请代码:-
}
我的 Tornado 网络服务器代码:-
javascript - AJAX 和高速公路
我在 Web 浏览器中显示项目列表,该列表最初是通过服务器的 AJAX 调用请求的,然后通过侦听 autobahnjs 订阅(接收更改通知)进行更新。
我的一些项目(作业列表,有时在几百毫秒内完成,有时仅在很长时间后完成)可能会在加载网页时更新。这是很有可能的,因为在提交新作业后会立即显示作业列表。
我的问题是,我不知道订阅何时处于活动状态,因此有时我的项目列表会在我收到 AJAX 响应之后但在订阅激活之前发生更改(这导致项目永远不会看到更新)。
在 AJAX 调用之前启动订阅只能部分解决问题,因为现在项目列表可能会覆盖之前通过订阅发生的更改。这样做还需要找出订阅何时变为活动状态。
autobahn - 如何通知客户订阅成功/失败?
我正在订阅“队列:1.2.3”。客户如何知道他们是否已成功订阅?是否有服务器响应客户端的机制?
下面是我用来测试订阅的一个简单程序。我不确定在服务器端显示什么。
我觉得这篇文章触及了我的问题:Calling dispatch in subscribe in Autobahn
python - 使用 Autobahn/Twisted 在 Tornado HTTP Handler 中建立 websocket 连接
问题:客户端发送一个 http 请求。对于那个 HTTP 请求,我希望我的 tornado 服务器打开到外部服务器的 websocket 连接并超时获取一些数据。(我需要存储在数据库中的数据)。我还需要能够处理对龙卷风服务器的多个用户请求。
这是我的实现
这是我的 Socket 连接类:
这里 reactor.run() 阻止了对 Tornado Web 服务器的进一步 http 请求,因此我在 websocket 工作完成并关闭后立即尝试了 reactor.stop()。但是现在我发现重启反应堆是不可能的。
有没有更好的替代方法或我可能遗漏的任何东西..
python - 高速公路 websocket pubsub 在 while 循环中发布
我正在使用带有 pubsub 的高速公路 websocket。
我有一项服务可以获取数据并收集数据并将其放入 Redis 的主题中
然后我想收听新消息,然后使用高速公路 pubsub 发布到主题。当函数退出时它工作正常,但是当我把它放在一个 for 循环中(不断地监听新的 redis 消息)它没有发布任何东西
我认为这是因为这阻止了反应堆实际发布数据。Iv 尝试调查 deferToThread 但这不起作用。
我想知道有没有人知道我基本上可以如何在一段时间循环中将数据发布到高速公路主题。
谢谢
python - 覆盖 Autobahn/Twisted WebsocketClientProtocol 类
我想重写我的 WebSocketClientFactory 类以允许传入数据填充作业队列。这是我正在尝试的连接代码
这是我的套接字类:
但是我收到错误
有什么方法可以在我的主线程和我在其中创建的 websocket 之间共享队列。
python - Autobahn Python 中的事件处理
我希望我的 websocket 客户端在 my_flag 设置为 True 后立即关闭连接。这是我的套接字类:
现在,my_flag 在程序运行的其他地方一段时间后被设置为 true。(在不同的线程内)。而不是等待
一种循环,是否有任何事件可以定义并附加到我的 websocket 类。即当 my_flag 设置为 true 时触发的函数
autobahn - PubSub:推荐使用 Autobahn Python/WAMP 保存消息的方法
我正在使用高速公路向订阅的客户广播消息。但是,当客户端未连接到 Internet 时,它们仍然需要在重新连接时接收消息。我是否需要使用 RabbitMQ 之类的东西来完成此操作,或者 Autobahn 是否可以本地处理?