我想使用ZeroMQ进行发布和订阅。我使用python作为发布者,node js作为订阅服务器。在
代码如下:
出版物
import zmq
import random
import sys
import time
port = "3001"
if len(sys.argv) > 1:
port = sys.argv[1]
int(port)
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://127.0.0.1:3001")
while True:
topic = "hello"
messagedata = "world"
print "%s %s" % (topic, messagedata)
socket.send("%s %s" % (topic, messagedata))
time.sleep(1)
子js
^{pr2}$但结果是,TOPIC变成了一个缓冲区,数据是这样未定义的:
Topic <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64> Data undefined
如何解决?谢谢你
ZeroMQ
PUB.send()
-s原样的消息体:每一个
SUB
-side配置的<aTopicFILTER>
-string的左侧字符串是否与消息正文匹配。在因此,您的
PUB
侧产生了一条消息,至少有一个SUB
-侧配置了<aTopicFILTER>
-字符串(这里"hello"
被设置/匹配)。在因此,这样的消息被正确地传递到
SUB
进行进一步处理:与发布的ZeroMQ API规范完全匹配,
Q、 急诊室
虽然您的代码确实执行了预期的操作,但它并没有执行您希望它执行的操作。您似乎希望它将消息拆分为主题(
'hello'
)和数据('world'
)。在这种情况不会发生的原因是,当您发送消息时,您将主题和数据组合到一个字符串中,而接收者希望它是一个分为两部分的多部分消息。最简单的解决方案是在Python服务器中实际生成一个由两部分组成的消息。在
因此,更换
与
^{pr2}$我希望你的系统能如你所愿工作。在
相关问题 更多 >
编程相关推荐