当前位置: 首页 > 工具软件 > JSON-RPC-Java > 使用案例 >

Kurento的JsonRpc文档 6.6.1-第4章 JSON-RPC客户端 翻译

双子民
2023-12-01

这是用java语言实现的客户端连接kurento-jsonrpc-server服务,或者连接其它websocket服务实现了json-rpc协议的服务器,它允许java程序通过json-rpc调用kurento-jsonrpc-server,它也发布一个maven依赖项中,通过在项目中加入以下依赖:

<dependency>

    <groupId>org.kurento</groupId>

    <artifactId>kurento-jsonrpc-server</artifactId>

    <version>6.6.1-SNAPSHOT</version>

</dependency>

4.1创建一个客户端

与服务器相反,客户端是与框架无关的,所以它能被用于常规的java应用,javaEE,Spring等等,创建一个客户端并发送请求到服务器是非常简单的,服务器的URI是通过JsonRpcClientWebSocket类的构造函数,假设运行在同样的机器上。

JsonRpcClient client = new JsonRpcClientWebSocket("ws://localhost:8080/echo");

4.2发送一个请求

一个json-rpc调用代表着发送一个请求对象到服务器,请求对象包括以下成员

jsonrpc:json-rpc的协议版本字符串,本例使用”2.0”

method:调用方法的名称字符串

params:调用method方法参数值,可以省略,类型由服务器定义

id:客户端的标识,如果是一个通知则不需要id,服务器返回对象也有同样的值,这个成员用于关联两个对象的上下文。

所有的这些成员用户必须要设置”method”和”params”,其它的两个由库进行管理

服务器定义上一章期望的JsonObject和只写了一个echo方法,返回调求的”params”对象,服务器通过client.sendRequest(request)返回已经将params封装到Response<JsonElement>给客户端:

Request<JsonObject> request = new Request<>();

request.setMethod("echo");

JsonObject params = new JsonObject();

params.addProperty("some property", "Some Value");

request.setParams(params);

Response<JsonElement> response = client.sendRequest(request);

4.2.1其它消息:通知

通知的请求对象是不包括”id”成员,这个请求的通知表示客户端对响应对象不感兴趣。不需要返回响应对象给客户端。通知没有确认定义,它不用返回一个响应对象,所以发送者不需要处理一些错误(比如“非法参数”,“内部错误”)

client.sendNotification("echo");

4.2.2服务响应

当服务返回rpc调用,这个返回除了通知以外,当个的jsonobject包括以下成员:

jsonrpc:json-rpc的协议版本字符串,本例使用”2.0”

result:这个成员只有成功才存在,值由调用服务器确定。

error:这个成员只有存在错误信息才存在,这个类型是错误对象

id:这是请求成员,这个必须与请求的id成员一致。

响应的包括”result”或者”error”成员,查不是全部存在。

Error对象

当rpc调用遇到错误时,响应对象包括error成员,error的值是一个对象,对象成员包括:

code:整型的错误类型

message:错误的简短描述

data:包含有关错误的其他信息的原始值或结构化值,可能是省略由服务器定义(例如,详细的错误信息,嵌套的错误等)

4.3添加连接监听

客户端可以为连接事件设置监听,用户能定义JsonRpcWSConnectionListener重写某些方法,连接监听一旦被定义,就可以传递给客户端的构造函数,一旦事件被产生了就可以调用这些方法。

JsonRpcWSConnectionListener listener = new JsonRpcWSConnectionListener() {

 

    @Override

    public void reconnected(boolean sameServer) {

        // ...

    }

 

    @Override

    public void disconnected() {

        // ...

    }

 

    @Override

    public void connectionFailed() {

        // ...

    }

 

    @Override

    public void connected() {

        // ...

    }

} ;

JsonRpcClient client = new JsonRpcClientWebSocket("ws://localhost:8080/echo", listener);

 

4.4管理心跳

服务的心跳机制是定时发送ping消息,可以控制客户端的以下方法:

enableHeadrtbeat:启用心跳机制,默认是间隔5秒,但是你可以重写这个方法改变间隔时间,这个方法接收数字型参数。

disableHeartbeat:停止定期发送ping消息

4.5修改默认超时时间

不仅仅ping消息间隔时间可以配置,其它的也可以配置

Connetction timeout :这个是等待客户端与服务的连接建立。

Idle timeout:如果一定时间内没有消息发送,这个连接将被空闲和关闭

Request timeout:服务器应该在一定时间内回答请求。如果消息没有在这个时间内回答用户请求,假定服务器没有返回请求,客户端产生TransportException异常。

4.6java文档

• kurento-jsonrpc-client

 类似资料: