Remote procedure calls for ImJoy.
npm install imjoy-rpcLoad the library to the browser
``html`
type="text/javascript"
onload="imjoyRPC.setupRPC()"
src="https://cdn.jsdelivr.net/npm/imjoy-rpc@0.3.35/dist/imjoy-rpc.min.js"
>
Or, you can use the npm module:
`bash`
npm install imjoy-rpc
`js
import { imjoyRPC } from 'imjoy-rpc';
imjoyRPC.setupRPC({name: 'My Awesome App'}).then(api => {
})
`
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.setupRPC
Once received, it will call with the config from the imjoy-core:`html`
type="text/javascript"
onload="imjoyRPC.waitForInitialization()"
src="https://cdn.jsdelivr.net/npm/imjoy-rpc@0.3.35/dist/imjoy-rpc.min.js"
>
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 field, it should contain label, id, value(the default value), type(any type supported by , 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.
Setup ImJoy RPC manually:
`js`
imjoyRPC.setupRPC({name: 'My Awesome App'}).then((api)=>{
// use the api object to interact with imjoy-core
})
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"]
javascript
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
}
}
)
})
``