Skip to content

ZeroMQ

This uses a REQ socket from pyzmq. ZeroMQ carries bytes, so use request_json and parse_json:

import logging

import zmq

from jsonrpcclient import Error, Ok, parse_json, request_json

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:8000")
socket.send_string(request_json("ping"))
parsed = parse_json(socket.recv())
socket.close()
context.term()
if isinstance(parsed, Ok):
    print(parsed.result)
elif isinstance(parsed, Error):
    logging.error(parsed.message)

A REQ socket must receive a reply after every send. Don't send a notification on one unless your server replies to notifications with an empty message.