问题标签 [asynchronous-messaging-protocol]

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.

0 投票
1 回答
266 浏览

python - 链接延迟回调

我正在尝试在 AMP 客户端中链接延迟,如下所示:

客户:

服务器:

只有connect()在服务器端被解雇

0 投票
2 回答
416 浏览

python - LoopingCall AMP 命令

为什么我在尝试实现调用 AMP 命令的 LoopingCall 函数时会出错?

myamp.say()在循环内调用时出错:

0 投票
1 回答
205 浏览

python - 示例如何测试扭曲的 AMP

我试图弄清楚如何为 Twisted AMP 编写单元测试,但我似乎失败了。我检查了源代码,但它非常压倒性。

任何人都可以写或指出一个测试简单 AMP 协议通过响应者发送数据和接收数据的示例吗?

0 投票
1 回答
230 浏览

python - Serializing twisted.protocols.amp.AmpList for testing

I have a command as follows:

And I have a responder for it in a controller:

I am writing a unit test for it. This is my code:

Where ProtocolMixin is as follows:

It works if AmpList is not involved, but when it is - I get following error:

Which makes sense, but how do I serialize a list in AddChatMessagesTest.data?

0 投票
1 回答
301 浏览

python - 扭曲的 python 请求/响应消息和大量二进制数据传输

我正在尝试使用带有潜在 C# 和 ObjC 客户端的 python-twisted 来实现服务器。我从 LineReceiver 开始,它适用于基本消息传递,但我无法找出更强大的最佳方法。对于以下要求的简单解决方案有什么想法吗?

  • 请求和响应
    • 前任。发送消息以获取状态,接收状态返回
  • 接收二进制数据传输(非平凡,但不是海量 - 少于几兆)
    • 前任。小 png 文件的字节数

对于第一种情况,AMP 似乎是一个可行的解决方案,但可能无法处理数据传输情况的大小。

我也看过完整的 SOAP,但还没有找到一个足够好的例子来让我继续前进。

0 投票
0 回答
149 浏览

python - Twistd amp 协议:生产者/消费者模式?

我想使用协议在服务器/客户端之间发送数据:超过 65,535 字节限制大小的unicode(字符串)列表。处理限制大小问题的一个很好且干净的解决方案是实现生产者/消费者模式

不幸的是,我阅读了文档和示例,但找不到如何开始。对于小规模的传输数据,我的放大器实现效果很好。我在这里展示了我的代码的相关部分。

命令

服务器

客户

一些生成数据的代码(在上面的工厂构造函数中使用)

0 投票
0 回答
276 浏览

python - stompest 在 python 解释器退出之前不发送 ack

我有一个在自己的服务器上运行的 rabbitmq 队列。

我可以sudo rabbitmqctl list_queues在这台服务器上做队列中的消息数量。

在另一台服务器上,我收到 10 帧,并确认它们。然后我检查队列中的消息数量,并且数量没有改变。

然后我关闭 python 解释器并检查队列服务器上的消息数量,该数量减少了预期的数量(10)。我可以多次重复此过程,并且会发生相同的行为。

如果这是按照设计,我怎样才能让 ack 立即发生?我认为客户端类的del方法中可能存在奇怪的行为,但是没有

是否发生了一些无证的魔术?

我的“确认”代码:

0 投票
1 回答
184 浏览

python - 应如何取消 Twisted AMP Deferred?

我有一个 Twisted 客户端/服务器应用程序,其中客户端要求多个服务器使用 AMP 完成额外的工作。第一个响应客户端的服务器获胜——其他未完成的客户端请求应该被取消。

Deferred对象支持cancel()和取消函数可以传递给Deferred的构造函数。但是,AMP 的sendRemote()api 不支持传递取消函数。此外,我希望取消函数不仅在完成后停止处理本地请求,而且还从远程服务器中删除请求。

AMPBoxDispatcher确实有一个stopReceivingBoxes方法,但这会导致所有延迟出错(不是我想要的)。

有没有办法取消 AMP 请求?

0 投票
1 回答
378 浏览

python - 应用程序在微服务架构中进行通信的最佳方式是什么

我必须设计和实施一个服务交付平台。我目前的设计中有各种服务,所有这些工具都使用不同的技术。有些是基于 erlang 的并发 map-reduce 函数,有些是用于聚合一些文本文件的简单 bash 脚本。

我听说过XML/RPCProtocol Buffermessage-packsoupAMQP。目前我使用JSON,但加载和转储大型 json 文件有点费时/内存。是否有任何新的或稳健的方法可以在 HTTP 基础架构上的各种技术之间架起一座桥梁,并提供广泛的编程语言支持和良好的文档?

我还需要提到的是,我相信复杂性比延迟问题或其他与连接相关的问题更具腐蚀性。因此 JSON 替换不能增加设计的复杂性。

0 投票
1 回答
280 浏览

twisted - Python 之外的异步消息协议兼容性(和扭曲的)

异步消息协议是 python-twisted 中的一个简单协议。我有一个相当完整的应用程序(python、twisted、kivy)使用它。客户端-服务器架构实现了一种视图-控制器类型的关系,几乎所有的业务逻辑都是服务器端的,UI 接口代码只是反映模型状态的变化(由服务器发送)并发送适当的 AMP 消息。

以下是 AMP 协议在其他语言中的实现列表,但有些看起来未完成,而且大多数似乎并没有真正用于任何严肃的事情。

我正在研究的用例是一个完全 Python 的应用程序,目前可以在 Windows、Linux 和 Android 上运行(如果我有时间构建它,可能是 iOS)。将来可能会用“本机”语言(例如 Android 上的 Java/Swift)替换 View/UI 位,同时将业务位保持在 python 和扭曲中。

所以我有两个主要问题:-

  1. 说 AMP 仅在 python-twisted 和使用它的程序中真正使用是否准确?

  2. 是否还有其他更普遍有用的网络协议,它们既可以在twisted 中实现,也很容易在twisted 中使用并且是非特定的(例如jabber 真的只用于聊天)?最好不需要像 WAMP/autobahn 这样的服务器(如果我理解正确的话),因此它可以在任何可以运行 python 的设备中自包含。