npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

crossbarjs

v1.2.4

Published

Facade for autobahn.js and crossbar that aims at simplifying and centralizing its use.

Downloads

23

Readme

NPM

Build Status codecov Dependency Status Code Climate Known Vulnerabilities contributions welcome

What

crossbarjs is a library whose main purpose is to make interactions with crossbar easier, with support and focus over the 4 main crossbar functionalities and their counterparts:

  • publish
  • subscribe/unsubscribe
  • register/unregister
  • call

Without compromising access to any of the more advanced functionalities provided in the layer bellow.

Why

  • autobahn-js (the only other option for JavaScript) API is long and it breaks the principle of least astonishment. To use it you need to go through pages of sparse documentation understand advanced principles of JavaScript. crossbarjs is an attempt at fixing that. The API it provides is as simple and beginner friendly as possible and its purpose is to make sure that all you need to run crossbario is to download this module and run it without spending extra time on docs, as it is designed to be as intuitive as possible. crossbarjs uses autobahn-js behind the hood, so you can have all the advanced features of the latter one without all of the hassle.

  • crossbarjs handles full automatic reconnection, unlike its competitor. With crossbarjs if your connection fails, the library will attempt a partial reconnect first and then will re-subscribe and re-register everything, so your service keeps working as expected with no down time whatsoever. Its like nothing happened at all.

How

Following are instructions on how to install and use crossbarjs. For questions you can ask in the issues page:

For additional information on the API, feel free to check the crossbarjs home page.

Install

Before using this module, you need to have crossbar installed and running. Then you can do:

npm install crossbarjs --save

API

Functions

  • connect
  • disconnect
  • getSession
  • getConnection
  • register
  • unregister
  • call
  • setOpts
  • getOpts
  • setOptsDefault
  • publish
  • subscribe
  • unsubscribe

Events

  • onClose
  • onOpen
  • onError
  • onRecover

Examples

Connect and publish a message:

const crossbarjs = require("crossbarjs");

const crossbar  = crossbarjs();

crossbar.connect()
    .then(() => {
        crossbar.publish("myTopic", "arg1", "arg2");
    })
    .catch(console.log);

Subscribe to a topic:

const crossbarjs = require("crossbarjs");

const crossbar  = crossbarjs();

crossbar.connect()
    .then(() => {
        const print = (str1, str2) => console.log(`str1 is ${str1}, str2 is ${str2}`);
        return crossbar.subscribe("myTopic", print);
    })
    .catch(console.log);

Register a bunch of RPCs:

const crossbarjs = require("crossbarjs");

const crossbar  = crossbarjs();
    //after connecting
    const print = (str1, str2) => console.log(`str1 is ${str1}, str2 is ${str2}`);
    const add3 = (n1, n2, n3) => n1 + n2 + n3;

    crossbar.register([
        { "print": func: print },
        { "addThreeNumbers" : func: add3 }
    ])
    .then(() => console.log("Register successful"))
    .catch(console.log);

Unregister a bunch of RPCs:

//after connecting and registering
crossbar.unregister("print", "addThreeNumbers")
    .then(() => console.log("Unregister successful"))
    .catch(console.log);

Call an RPC:

    //after connecting and registering
    crossbar.call("addThreeNumbers", 1, 2, 3)
        .then(res => console.log(res))
        .catch(console.log);