/
Sending/Receiving messages on the EventBus using ZMQ

Sending/Receiving messages on the EventBus using ZMQ

Receiving messages

Components inside Openvisulizer use messages to communicate with each other. There is a lot of messages. Subscribing to all of them will impact the latency of Openvisualizer and it's also likely that you are only interested in a subset of all messages.

You can use the control plane socket to set up which kind of messages you want to receive:

#!/usr/bin/env python

import zmq 

context = zmq.Context()                                                                                                                           
socket = context.socket(zmq.REQ)
socket.connect ("tcp://localhost:50001")
# To subscribe
socket.send_json({"sub": ["bonjour"]})
# To unsubscribe
# socket.send_json({"unsub": ["bonjour"]})
# you can even do both
# socket.send_json({"sub": ["Hello"], "unsub": ["bonjour"]})
message = socket.recv()
print(message) # You will get the subscriptions of the PUB socket {"subscriptions":["Hello"]}

Once this is set up, you can receive messages using a snippet of code similar to this :

#!/usr/bin/env python

import zmq 

context = zmq.Context()  
subscriber = context.socket(zmq.SUB)
subscriber.connect("tcp://localhost:50002")
subscriber.setsockopt(zmq.SUBSCRIBE, "")
while True:
	string = subscriber.recv_json()
	print(string)


Sending messages

There is a REP socket waiting to receive message and inject them directly in the message bus. You can send message to the event bus by using a ZMQ REQsocket like this:

 #!/usr/bin/env python
import zmq
import time
d = {'signal': "bonjour", "sender": u"poipoi", "data": "hello world!"}

context = zmq.Context()
publisher = context.socket(zmq.REQ)
publisher.connect("tcp://localhost:60000")
count = 0
while True:
    count += 1
    publisher.send_json(d)
    message = publisher.recv_json()
    print "message {0} ".format(count),message
    time.sleep(2)

Related Issue :  SW-263 - Getting issue details... STATUS

Related content

Trigger remotely 6P packets over serial port, openvisualizer and ZMQ
Trigger remotely 6P packets over serial port, openvisualizer and ZMQ
More like this
OpenVisualizer JSON Interface
OpenVisualizer JSON Interface
More like this
OpenVisualizer
OpenVisualizer
More like this
OpenSim
OpenSim
More like this
CoAP Interaction
CoAP Interaction
More like this
Running a Network
Running a Network
More like this