ZeroMQ:如何在 python 和节点之间保持 PAIR/PAIR 的连接?

liz*_*zet 5 python distributed-computing zeromq node.js

我有一个 python 服务器和一个 node.js 客户端。问题是,有时当我重新启动 node.js 脚本时,它不会重新连接。

另外,我不明白的是为什么python上有一个无限循环。我不能使用事件来侦听连接。

下面是服务器和客户端。


context = zmq.Context()
socket = context.socket(zmq.PAIR)
print("Binding socket to port: " + str(port))
socket.bind("tcp://*:%s" % port)
print("Connection has been established")
while True: // cant we listen for events here i.e on connection etc
    msg = socket.recv()
    print(msg)
    socket.send("Server response")
Run Code Online (Sandbox Code Playgroud)
'use strict';
var globevt  = require('../lib/emitter');
var sprintf  = require("sprintf-js").sprintf;
var logger   = require('../lib/logat');
var zmq      = require('zeromq')
    , socket = zmq.socket('pair');
const fs     = require('fs');

socket.connect('tcp://127.0.0.1:3000');
socket.on('message', function (msg) {
    console.log(msg);
});
Run Code Online (Sandbox Code Playgroud)

此外,这仅在服务器先启动然后客户端启动时才有效。我怎样才能让客户端重试直到它连接?

Pau*_*lus 0

从 zmq 指南来看,成对套接字用于同一进程中的线程间通信。预期用途是让父线程绑定,然后将套接字上下文传递给子线程,并将其作为对/对组合连接到父线程套接字

\n
\n

独占对,独占连接两个套接字。这是连接进程中两个线程的模式,不要与 \xe2\x80\x9cnormal\xe2\x80\x9d 套接字对混淆。

\n
\n

对于进程间通信,您应该使用 req/rep、pub/sub 或其他模式。如果您需要简单可靠的进程间(有很多级别的可靠性),其中客户端可以处理服务器的消失,请查看该lazy pirate模式

\n