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

socket.io-rpc

v1.1.3

Published

Minimalistic remote procedure call(RPC/RMI) library bootstrapped on socket.io

Downloads

343

Readme

socket.io-rpc Build Status Join the chat at https://gitter.im/capaj/socket.io-rpc

NPM badge Dependency Status devDependency Status

Has an isomorphic(browser or node) client library(which sits in separate repo/npm package). Client side library has to be installed via JSPM.

It is a minimalistic remote procedure call(RPC/RMI) library bootstrapped on socket.io. Main purpose is to make it more easier to structure your async code for browser-server realtime interaction. Typical example is when you need to call a function on the server from client and get the return value from that function back to the client. With raw socket.io, you need to register few events and emit them at the right moment. This can get complicated quite easily, especially for async operations and error handling. Thanks to promises(and try/catch for sync operations), this library knows when a computation failed or suceeded.

With socket.io-rpc, you just expose a tree of functions and then call those, socket.io-rpc automatically resolves a promise on other side, when function returns or returned promise is resolved. It propagates thrown errors, so it is much easier to do errorhandling than with http error codes.

Why promises over network rather than HTTP codes?

Because they are more real abstraction on long running tasks over the network. Trying to map all possible error and their causes to available HTTP codes is impossible for any but simplest of web applications.

#Simple example Folder with example can be run after installing all dependencies like this in the simple-example folder:

npm install //this runs jspm install too

Then run it from git repo root:

node simple-example/server

###With authentication (server)

Set authentication normally as you would with socket.io.

###With authentication (browser)

Send your auth token with the backend connect method(the one that is exported from the module).

Browser support

numbers are for both clients(vanilla and Angular):
IE	FIREFOX	SAFARI	CHROME	OPERA	IPHONE	ANDROID
9.0+	3.5+	4.0+	4.0+	10.5+	2.0+	2.0+

Internal callbacks on client

There are 4 internal callbacks, which might help you in case you need to be notified of a request beginning and ending:

batchStarts   //called when invocation counter equals 1
batchEnds      //called when invocation counter equals endCounter
call          //called when one call is made to server
response           //called when a call response is fired