Jupyter and the future of IPython — IPython
Jupyter Notebook Viewer
How IPython works — IPython 3.2.1 documentation
Messaging in IPython — IPython 3.2.1 documentation
"ZeroMQ defines a number of socket types in order to support very distributed and fault tolerant applications, the ones we are interested in are as follows:
- REP: The only thing this socket does is receive requests and then reply to them.
- REQ: This socket is the opposite of REP - it sends requests and reads replies to them.
- PUB: This socket broadcasts (publishes) information to anyone who is listening.
- SUB: This socket subscribes to a PUB socket and listens to all its broadcasts.
- ROUTER: This socket can be used as a multi-user REP socket. It can receive requests from many other sockets and reply to all of them. ROUTER sockets store the identity of the source of the message before sending the message to the application, and the application receives messages from all origins. When replying to a message, the ROUTER socket will send the reply to the origin of the request.
- DEALER: This socket allows round-robin communication between sets of sockets. If a message is sent to a DEALER, the DEALER will send to all connected peers. This allows sets of sockets to communicate without explicit knowledge of all the sockets in the set."