Basic Application

Introduction

Sajya is a JSON-RPC server for Laravel that allows for automatic use through Laravel routes, but JSON-RPC is not limited to HTTP transport only. It can also be used with WebSockets, console commands, or other situations.

Usage

To use Sajya in your application, you will need to use the Sajya\Server\App class as the entry point for your JSON-RPC application. This class is used to register procedures and handle requests. To use it, you will need to create an instance of the Guide class and call its handle method:

use Sajya\Server\App;

/**
 * Instantiate the application
 */
$app = new App([
    // Add your procedure classes here, for example:
    SajyaProcedure::class
]);

// Define the JSON-RPC request
$request = '{"jsonrpc": "2.0", "method": "sajya@hello", "id": 1}';

// Handle the request using the application
$response = $app->handle($request);

The result of this will be a class that you can modify or easily convert into a JSON string for the response:

echo json_encode($response);

Executing Notification Requests

It is important to note that notification requests are not executed immediately. This can be a problem in long-lived applications. To execute them manually, you can call the terminate method on the container:

use Illuminate\Foundation\Application;

Application::getInstance()->terminate()

Alternatively, you can use the terminate method on the Guide instance, which will process deferred tasks every time:

$response = $app->terminate('{"jsonrpc": "2.0", "method": "sajya@hello", "id": 1}');