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 credentialsconfig.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 validconfig.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)=>{
})
Configuration for setupRPC
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
}
}
)
})