imjoy-rpc
TypeScript icon, indicating that this package has built-in type declarations

0.5.48-post1 • Public • Published

ImJoy RPC

Usage

Load the library to the browser

<script
  type="text/javascript"
  onload="imjoyRPC.setupRPC()"
  src="https://cdn.jsdelivr.net/npm/imjoy-rpc@0.3.35/dist/imjoy-rpc.min.js"
></script>

Or, you can use the npm module:

npm install imjoy-rpc
import { imjoyRPC } from 'imjoy-rpc';

imjoyRPC.setupRPC({name: 'My Awesome App'}).then(api => {

})

imjoyRPC.waitForInitialization

This function is used to setup a base frame for running plugins. It will send imjoyRPCReady signal to the imjoy-core and listen for the initialize signal. Once received, it will call setupRPC with the config from the imjoy-core:

<script
  type="text/javascript"
  onload="imjoyRPC.waitForInitialization()"
  src="https://cdn.jsdelivr.net/npm/imjoy-rpc@0.3.35/dist/imjoy-rpc.min.js"
></script>

If needed, the authentication will also be done in this step (see config below).

config

You can optionally pass a config object into the function imjoyRPC.waitForInitialization(config)

  • config.credential_required: boolean, whether your RPC app requires credentials
  • config.credential_fields: array(of object), what are the fields required for the credentials, the properties of the objects will be used to generate HTML <input> field, it should contain label, id, value(the default value), type(any type supported by <input>, e.g.: text, number, password). For example: [{id: 'username', label: 'User Name', value: '', type: 'text'}, {id: 'password', label: 'Password', value: '', type: 'password'}].
  • config.verify_credential: function, a function to check if the submitted credential is valid
  • config.target_origin: string, the target origin required to connect to the RPC app, it's mandatory to set an explicit origin.

imjoyRPC.setupRPC

Setup ImJoy RPC manually:

imjoyRPC.setupRPC({name: 'My Awesome App'}).then((api)=>{
    // use the api object to interact with imjoy-core
})

Configuration for setupRPC

  • name Name of your app

Required

  • description Short description of your app

Default: [TODO: add description for YOUR APP]

  • version Version of your app

Default: "0.1.0"

  • allow_execution Allow code execution

Default: false

  • target_origin Set the target origin for postMessage

Default: *

  • enable_service_worker Enable service worker for cachine requirements

Default: false

  • cache_requirements A callback function for caching requirements in the service worker

Default: null

  • forwarding_functions A list of function names which will be exported automatically and forwarded to the remote api. Default: ["close", "on", "off", "emit"] for all plugins, window plugins will include additional ones: ["resize", "show", "hide", "refresh"]

Connect to Hypha

import { hyphaWebsocketClient } from "imjoy-rpc";

hyphaWebsocketClient.connectToServer({
  server_url: 'https://ai.imjoy.io',
}).then(async (api)=>{
  await api.register_service(
      {
          "id": "echo-service",
          "config":{
              "visibility": "public"
          },
          "type": "echo",
          echo( data ){
              console.log("Echo: ", data)
              return data
          }
      }
  )
})

Readme

Keywords

Package Sidebar

Install

npm i imjoy-rpc

Weekly Downloads

385

Version

0.5.48-post1

License

MIT

Unpacked Size

4.41 MB

Total Files

54

Last publish

Collaborators

  • oeway