ZeroMQ Pub/Sub 最简单示例无法工作 - 我哪里做错了?
根据zmq文档中的例子,我做了一些小的修改,下面是我的版本。
publisher.py
import zmq
import random
import time
port = "5556"
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://127.0.0.1:%s" % port)
while True:
topic = random.randrange(9999,10005)
messagedata = random.randrange(1,215) - 80
print "%d %d" % (topic, messagedata)
socket.send("%d %d" % (topic, messagedata))
time.sleep(1)
subscriber.py
import sys
import zmq
port = "5556"
context = zmq.Context()
socket = context.socket(zmq.SUB)
print "Collecting updates from weather server..."
socket.connect ("tcp://127.0.0.1:%s" % port)
while True:
print socket.recv()
然后我在终端中运行这两个程序,当发布者在发布消息(也就是打印出内容)时,订阅者却一直卡在socket.recv()
这行代码上,无法继续。
1 个回答
10
添加
socket.setsockopt(zmq.SUBSCRIBE, "")
到订阅者,这个方法有效!
这是更新后的 subscriber.py 文件
import sys
import zmq
port = "5556"
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.setsockopt(zmq.SUBSCRIBE, "")
print "Collecting updates from weather server..."
socket.connect ("tcp://127.0.0.1:%s" % port)
while True:
print socket.recv()