Adonis, Adonis 5, Redis RPC
Simple RPC Provider for Adonis 5, based on Redis pub/sub transport
Setup redis from this manual
and
npm i adonis5-redis-rpc
node ace invoke adonis5-redis-rpc
You can create adonis command (node ace make:command RPCServer) like this:
import { BaseCommand } from '@adonisjs/core/build/standalone'
import RedisRPC from '@ioc:Adonis/Addons/RedisRPC'
export default class VangaPlaincalc extends BaseCommand {
/**
* Command name is used to run the command
*/
public static commandName = 'vanga:plaincalc'
/**
* Command description is displayed in the "help" output
*/
public static description = ''
public static settings = {
/**
* Set the following value to true, if you want to load the application
* before running the command
*/
loadApp: true,
/**
* Set the following value to true, if you want this command to keep running until
* you manually decide to exit the process
*/
stayAlive: false,
}
public async run() {
this.logger.info('Hello world!')
await RedisRPC.server()
RedisRPC.addHandler<{}>('exampleMethod', async (payload) => {
console.log(payload)
return {success: true}
})
}
}
import Route from '@ioc:Adonis/Core/Route'
import RedisRPC from '@ioc:Adonis/Addons/RedisRPC'
Route.get('example', () => {
await RedisRPC.client()
const result = await RedisRPC.call('exampleMethod', {data: 'message'})
return result
})