使用Python在Raspberry Pi上的代理

问题描述 投票:0回答:1

我正在使用Python在Raspberry Pi上编程代理,并且用JavaScript编程了sub.js和pub.js。 pub和sub都经过了测试,可以正常工作,但是代理代码没有反应。

PUSH.js

const{PUSH}= require('./config');
var zmq = require("zeromq"),
 sock = zmq.socket("push");

sock.connect("tcp://"+PUSH);
console.log("PUSH connected to port 24041 from the broker");

setInterval(function() {
  console.log("PUSH sending to broker");
  sock.send("example");//send to broker
}, 500);

SUB.js

const{sub}= require('./config');
var zmq = require("zeromq"),
  sock = zmq.socket("sub");

sock.connect("tcp://"+ sub);
console.log("sub connected to port 24042 from the broker");
sock.subscribe(""); //term what sub send

sock.on("message", function (msg) {
  //Broker received what pub send
  console.log("Broker has received: %s", msg.toString());
});

Output from working broker sending "example"Output from raspberry pi for PUSH.js and PUB.js

使用代理代码,我想从PUSH.js(端口41)接收和打印,然后发送回SUB.js(端口42)。

import zmq

import time

def main():

    """main method"""

    # Prepare our context and publisher
    context   = zmq.Context()
    publisher = context.socket(zmq.PUSH)
    subscriber = context.socket(zmq.SUB)
    publisher.connect("tcp://address:42")
    subscriber.connect("tcp://address:41")
    subscriber.setsockopt(zmq.SUBSCRIBE, b"example")

    while True:
        #print received contents from port 41
        [address, contents] = subscriber.recv_multipart()
        print("[%s] %s" % (address, contents))
        #send received contents from port 42
        publisher.send_multipart([address, contents])

    # We never get here but clean up anyhow
    publisher.close()
    subscriber.close()
    context.term()  
    if __name__ == "__main__":

    main()

输出代理:没有打印

python zeromq
1个回答
0
投票

如果从未使用过ZeroMQ,在这里您可以先看看"ZeroMQ Principles in less than Five Seconds",然后再深入研究更多细节]]


1]

确保端口号匹配-41 != 24041 /42 != 240422]确保每个链接至少有一个.bind()节点,而所有其他.connect()都指向该地址/端口,以使b PUB/SUBPUSH/PULL原型确实可以协同工作3]确保遵循ZeroMQ发布的API并避免设置不兼容,例如尝试绑定PUSH/PUSH
© www.soinside.com 2019 - 2024. All rights reserved.