Have ideas to improve npm?Join in the discussion! »


    2.0.9 • Public • Published


    jmp is an npm module for creating, parsing and replying to messages of the Jupyter Messaging Protocol over ZMQ sockets.


    • Version v2.0.0 does not ship any API changes, but it upgrades to zeromq@5 and thus it requires node v6 or above.

    • Version v1.0.0 is a backwards-compatible change in the API. Now, Message#respond returns the response message, so that users can access properties like the response header.

    • Version v0.7.0 depends on zeromq. zmq-prebuilt has been renamed zeromq and is now maintained by the zeromq organisation.

    • Version v0.6.0 depends on zmq-prebuilt to help with testing. See issue #18.

    • Version v0.5.0 is backwards-incompatible. The attribute Message#blobs has been renamed to Message#buffers. See issue #14.

    • Version v0.4.0 is backwards-incompatible. The attribute Message#signatureOK has been removed. See issue #10.

    • Version v0.2.0 is backwards-incompatible. The attribute Message#parentHeader has been renamed to Message#parent_header. See issue #7.

    • Version v0.1.0 is backwards-incompatible. npm packages depending on the initial release of JMP need to update their dependency field:

    "jmp": "<0.1.0",


    The latest stable release is published on npm and can be installed by running:

    npm install jmp

    The master branch in the github repository provides the latest development version and can be installed by:

    git clone https://github.com/n-riesco/jmp.git
    npm install ./jmp

    Branch v0.0 provides the latest version of JMP, backwards-compatible with the first release. It can be installed from npm:

    npm install "jmp@<0.1.0"

    or github:

    git clone -b v0.0 https://github.com/n-riesco/jmp.git
    npm install ./jmp


    Import modules

    JMP depends on ZMQ and for convenience JMP exports the module zmq:

    var crypto = require("crypto");
    var uuid = require("uuid/v4");
    var jmp = require("jmp");
    var zmq = jmp.zmq;

    Create JMP sockets

    var scheme = "sha256";
    var key = crypto.randomBytes(256).toString('base64');
    var serverSocket = new jmp.Socket("router", scheme, key);
    var clientSocket = new jmp.Socket("dealer", scheme, key);
    var address = "tcp://";

    Create a JMP message from scratch

    var request = new jmp.Message();
    request.idents = [];
    request.header = {
        "msg_id": uuid(),
        "username": "user",
        "session": uuid(),
        "msg_type": "kernel_info_request",
        "version": "5.0",
    request.parent_header = {};
    request.metadata = {};
    request.content = {};

    Send a message over a JMP socket


    Listen on a JMP socket and respond to a message

    serverSocket.on("message", onRequest);
    function onRequest(msg) {
        var responseMessageType = "kernel_info_reply";
        var responseContent = {
            "protocol_version": "0.0.0",
            "implementation": "kernel",
            "implementation_version": "0.0.0",
            "language_info": {
                "name": "test",
                "version": "0.0.0",
                "mimetype": "text/plain",
                "file_extension": "test",
            "banner": "Test",
            "help_links": [{
                "text": "JMP",
                "url": "https://github.com/n-riesco/nel",
        var responseMetadata = {};
            serverSocket, responseMessageType, responseContent, reponseMetadata

    Remove listeners and close sockets

    serverSocket.removeListener("message", getRequest);


    Documentation generated using JSDoc can be found here.


    First of all, thank you for taking the time to contribute. Please, read CONTRIBUTING.md and use the issue tracker for any contributions: support requests, bug reports, enhancement requests, pull requests, ...


    npm i @aminya/jmp

    DownloadsWeekly Downloads






    Unpacked Size

    45.3 kB

    Total Files


    Last publish


    • avatar