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

hello-frame-rpc

v2.0.0

Published

client/server-style rpc for iframe postMessage communication

Downloads

6

Readme

hello-frame-rpc

client/server-style RPC for iframe postMessage communication

This package provides some setup on top of frame-rpc to configure the postMessage origins and window.parent traversal with a hello message before dropping down into the primary RPC mechanism.

example

we can have a "server" app running on http://localhost:9000:

var rpc = require('hello-frame-rpc');
var methods = {
    multi: function (n, cb) { cb(n * 111) }
};
rpc.listen('*', methods, function (err, remote) {
    remote.call('say', 'hello from the server!!!');
});
$ browserify server.js -o server/bundle.js
$ ecstatic -p 9000 server/

and a "client" app running on http://localhost:9001:

var rpc = require('hello-frame-rpc');
var methods = {
    say: function (msg) {
        var div = document.createElement('div');
        div.textContent = msg;
        document.body.appendChild(div);
    }
};

rpc.connect('http://localhost:9000', methods, function (err, remote) {
    remote.call('multi', 5, function (n) {
        console.log('n=', n);
    });
});
$ browserify client.js -o client/bundle.js
$ ecstatic -p 9001 client/

Now visit http://localhost:9001 in a browser. You will see a greeting, "hello from the server!!!" rendered to the page and a message in the console: n=555.

api

var rpc = require('hello-frame-rpc')

rpc.listen(origin, methods, cb)

Listen for incoming requests on origin and serve up methods.

methods can be an object mapping names to methods the remote endpoint can call or a function methods(remote) that will get a handle to the remote frame-rpc instance and should return an object mapping names to methods.

cb(err, remote) fires when a parent iframe successfully connects with remote, a frame-rpc handle.

origin can be the string '*' (anything), an allowed string url, an array of allowed string urls, or a function (x) {} that will take the incoming origin as its argument and should return a boolean about whether the origin argument is allowed.

The remote handle has .call() and .apply() methods to call functions on the remote endpoint with an optional callback as the last argument.

rpc.connect(src, methods, cb)

Connect to src, a url string to open in an iframe. methods will be exposed to the iframe.

methods can be an object mapping names to methods the remote endpoint can call or a function methods(remote) that will get a handle to the remote frame-rpc instance and should return an object mapping names to methods.

cb(err, remote) fires when the "server" iframe is fully connected with remote, a frame-rpc handle.

The remote handle has .call() and .apply() methods to call functions on the remote endpoint with an optional callback as the last argument.

install

With npm, do:

npm install hello-frame-rpc

sponsors

Thanks to blockai for sponsoring development of this project.

license

MIT