天天看點

Kurento JSON-RPC 中文文檔KURENTO JSON-RPC 中文文檔

文章目錄

  • KURENTO JSON-RPC 中文文檔
    • 版本
    • 描述
    • 代碼結構
    • Json-Rpc 服務端
      • Session控制
      • Handlers處理
        • 進階特性
        • 連接配接事件處理
      • Notifications通知
      • Java文檔
    • Json-Rpc用戶端
      • 建立用戶端
      • 發送請求
        • 其他消息:通知
        • 服務端響應
        • Error對象
      • 添加連接配接監聽器
      • 管理心跳
      • 更改預設逾時
      • Java文檔
    • Json-Rpc JS用戶端
      • JsonRpcClient
        • 建立用戶端
      • 發送請求
        • 服務端響應
        • Error對象
        • 其他方法
      • WebSocket重連
    • JSON-RPC加密連接配接
      • JSON-RPC服務端加密
      • JSON-RPC用戶端連接配接加密服務端
    • 術語表

KURENTO JSON-RPC 中文文檔

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/popboy100/article/details/85049569

版本

Kurento V6.6.1-dev

描述

本文檔描述了Kurento項目中JSON-RPC用戶端與服務端的實作。對于WebSocket協定的詳細介紹超出了本文檔的範圍。但是,至少必須了解,HTTP僅用于初始握手階段,而初始握手階段依賴于HTTP的内置機制,去請求協定更新(或在本例中稱為協定切換),如果伺服器同意,則伺服器響應的HTTP狀态為101(正在切換協定)。假設握手成功,HTTP更新請求的底層TCP Socket将保持打開狀态,用戶端和服務端都可以通過Socket彼此發送消息。有關協定本身的資訊,請參閱項目文檔中的此頁面。

如JSON-RPC v2.0規範所描述的那樣,該協定意味着存在一個送出請求的用戶端,并且存在一個處理這些請求的服務端。這與v1.0截然相反,後者使用的是Peer-to-Peer架構,其中兩個Peer既是用戶端又是服務端。

代碼結構

Kurento已經實作了Java版本的JSON-RPC服務端,還有使用Java和Javascript實作的用戶端。所有實作都托管在GitHub上:

  • Java - https://github.com/Kurento/kurento-java/tree/master/kurento-jsonrpc
  • Javascript - https://github.com/Kurento/kurento-jsonrpc-js

Java實作包含具有以下子產品的Maven項目:

  • kurento-java - Reactor項目
  • kurento-java/kurento-jsonrpc/kurento-jsonrpc-server - Kurento自己的JSON-RPC服務端實作。
  • kurento-java/kurento-jsonrpc/kurento-jsonrpc-client - kurento-jsonrpc-server的Java用戶端,或實作JSON-RPC協定的任何其他WebSocket服務端。
  • kurento-java/kurento-jsonrpc/kurento-jsonrpc-demo-server - 這是Kurento JsonRpc服務端的示範應用程式。它由一個WebSocket服務端組成,該服務端包括若幹個JsonRpc消息的測試處理程式。

Javascript實作包括:

  • kurento-jsonrpc-js - kurento-jsonrpc-server的JavaScript用戶端,或實作JSON-RPC協定的任何其他WebSocket服務端。這個壓縮版的庫是可用的。

Json-Rpc 服務端

這是JAVA實作的JSON-RPC服務端。它隻支援v2.0,這意味着可以使用通知。然而,唯一可用的傳輸協定是WebSocket。它作為Maven artifact釋出,允許開發人員簡單易用的管理它作為依賴項,通過在其項目的pom中包含以下依賴項:

<dependency>
    <groupId>org.kurento</groupId>
    <artifactId>kurento-jsonrpc-server</artifactId>
    <version>6.6.1-SNAPSHOT</version>
</dependency>
           

服務端基于Spring Boot 1.3.0.RELEASE,使用非常簡單,類似于Spring中WebSocketHandler的建立和配置。它基本上由伺服器的配置和一個實作接收請求的處理類組成。下面的代碼為JSON-RPC請求實作了一個處理,其中包含一個JsonObject作為參數資料類型。此處理将接收到的參數發回給用戶端。由于請求處理總是傳回一個響應,如果程式員沒有故意這樣做,庫将自動發送一個空響應。在下面的示例中,如果請求沒有調用echo方法,它将傳回一個空響應:

import org.kurento.jsonrpc.DefaultJsonRpcHandler;
import org.kurento.jsonrpc.Transaction;
import org.kurento.jsonrpc.message.Request;

import com.google.gson.JsonObject;

public class EchoJsonRpcHandler extends DefaultJsonRpcHandler<JsonObject> {

    @Override
    public void handleRequest(Transaction transaction,
            Request<JsonObject> request) throws Exception {
        if ("echo".equalsIgnoreCase(request.getMethod())) {
            transaction.sendResponse(request.getParams());
        }
    }
}
           

該方法的第一個參數是Transaction,它表示用戶端和服務端之間的消息交換。Transaction可用的方法(不包括重載),以及不同用法如下:

  • sendResponse: 将響應發送回用戶端。
  • sendError: 将錯誤發送回用戶端。
  • getSession: 傳回配置設定給用戶端的JSON-RPC會話。
  • startAsync: 如果程式員想要在handleRequest方法調用之外響應請求,可以使用這個方法來訓示服務端暫時不響應。當請求需要很長時間處理且服務端未被鎖定時,可以使用此方法。
  • isNotification: 評估接收到的消息是否是通知,在這種情況下,不應該響應它。

在方法handleRequest中,開發人員可以通路JSON-RPC請求(method、params、id或jsonrpc)的任何字段。這就是管理調用方法的地方。除了在該類中處理的方法外,服務端還處理以下特殊method值:

  • close: 用戶端在優雅地關閉連接配接時發送此方法。這允許服務端關閉連接配接并釋放資源。
  • reconnect: 已斷開連接配接的用戶端可以發出此消息附加到已存在的會話上。sessionId是強制性參數。
  • ping: 簡單的ping-pong消息交換提供心跳機制。

***DefaultJsonRpcHandler***類是根據請求附帶的有效負載進行泛化的。在前面的代碼中,預期的有效負載是JsonObject,但也可以是普通字元串或任何其他對象。

為了使用Handler去配置基于WebSocket的JSON-RPC服務端,開發人員可以使用JsonRpcConfiguration,将上述WebSocket處理映射到特定的URL(本例中為http://localhost:8080/echo):

import org.kurento.jsonrpc.internal.server.config.JsonRpcConfiguration;
import org.kurento.jsonrpc.server.JsonRpcConfigurer;
import org.kurento.jsonrpc.server.JsonRpcHandlerRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;

@Import(JsonRpcConfiguration.class)
public class EchoServerApplication implements JsonRpcConfigurer {

    @Override
    public void registerJsonRpcHandlers(JsonRpcHandlerRegistry registry) {
        registry.addHandler(new EchoJsonRpcHandler(), "/echo"); // “/echo” is the path relative to the server’s URL
    }

}
           

Session控制

連接配接到此伺服器每個用戶端都将被配置設定一個唯一的sessionId。這提供了session會話概念,可用通過該方式擴充為多個WebSocket會話。JSON-RPC會話,允許将一組屬性綁定到一個特定的會話上。這使開發人員能夠實作具有狀态服務會話服務端的能力,這樣使用者可以在重連後恢複會話。在會話對象中有如下可用的方法:

  • getSessionId: 擷取配置設定給此會話的ID。它可以用于跟蹤會話,并将其注冊到伺服器中,并将其映射到其他資源。
  • getRegisterInfo: 由用戶端在連接配接時設定的注冊資訊,服務端可以通過此方法通路注冊新。
  • isNew: 如果消息是會話的第一條消息,則為true。
  • close: 優雅地關閉連接配接。
  • setReconnectionTimeout: 設定伺服器在關閉會話之前等待重新連接配接的時間。
  • getAttributes: 傳回會話中的屬性映射。

Handlers處理

進階特性

注冊handler時,有許多特性是可以配置的。這些可以通過DefaultJsonRpcHandler中的API進行設定:

  • withSockJS() - 啟用SockJS作為WS庫,如果更新失敗,将回退為HTTP。用戶端應該具有SockJS能力。更多資訊
  • withLabel(String) - 添加處理請求時使用的标簽。這允許在日志檔案中有一個友好的名稱,以便更容易地跟蹤執行情況。
  • withPingWatchdog(true|false) - ping看門狗是一種監視心跳機制健康狀況的功能,允許檢測在預期時間内沒有接收到正常ping消息的問題。出現這種問題則會通知服務端,盡管WebSocket連接配接可能仍然處于打開狀态,但另一端的用戶端卻無法按預期工作。
  • withAllowedOrigins(String[]) - 預設情況下,隻允許與應用程式服務的來源(主機和端口)相同的用戶端進行連接配接,進而限制了叢集和負載平衡功能。此方法接受一個字元串數組,該字元串數組為允許連接配接的來源。官方的Spring Boot文檔提供了關于這方面的工作細節。

連接配接事件處理

該handler重寫某些與連接配接事件相關的方法,現有的方法如下:

import org.kurento.jsonrpc.DefaultJsonRpcHandler;
import com.google.gson.JsonObject;

public class EchoJsonRpcHandler extends DefaultJsonRpcHandler<JsonObject> {

    // ...

    @Override
    public void afterConnectionEstablished(Session session) throws Exception {
        // Do something useful here
    }

    @Override
    public void afterConnectionClosed(Session session, String status)
            throws Exception {
        // Do something useful here
    }

    @Override
    public void handleTransportError(Session session, Throwable exception)
            throws Exception {
        // Do something useful here
    }

    @Override
    public void handleUncaughtException(Session session, Exception exception) {
        // Do something useful here
    }
}
           

Notifications通知

Notification是一個沒有“id”成員的Request對象。作為通知的Request對象表示發送方對相應的Response對象不感興趣,是以不需要傳回響應對象。

根據定義,Notification是不可确認的,因為它們沒有要傳回的Response對象。是以,發送者不會發現任何錯誤(比如:“無效參數”、“内部錯誤”)。

伺服器可以通過持有的session對象向連接配接的用戶端發送通知。為此,在連接配接時需要存儲每個用戶端的Session對象。這可以通過重寫handler的***afterConnectionEstablished ***方法來實作。

public class EchoJsonRpcHandler extends DefaultJsonRpcHandler<JsonObject> {

    public final Map<String, Session> sessions = new HashMap<>();

    @Override
    public void afterConnectionEstablished(Session session) {
        String clientId = (String) session.getAttributes().get("clientId");
        sessions.put(clientId, session);
    }

    @Override
    public void afterConnectionClosed(Session session, String status)
         throws Exception {
        String clientId = (String) session.getAttributes().get("clientId");
        sessions.remove(clientId);
    }

    // Other methods
}
           

會話如何與每個用戶端配對取決于應用程式的業務邏輯。在本例中,我們假設會話包含一個clientId屬性,該屬性可用于唯一辨別每個用戶端。還可以使用sessionId,庫将:term:UUID作為會話辨別符,但它們對使用該庫的應用程式沒有意義。當用戶端斷開連接配接時,最好不要遺留已注冊的會話,是以我們重寫PostConnectionClosed方法,并在那裡删除存儲的Session對象。

通知通過已建立的會話發送給連接配接的用戶端。同樣,如何将會話映射到用戶端,這超出了本文檔的範圍,因為它取決于應用程式的業務邏輯。假設handler對象位于相同的範圍内,下面的代碼片段将顯示如何向特定用戶端發送通知:

public void sendNotification(String clientId, String method, Object params)
    throws IOException {
  handler.sessions.get(clientId).sendNotification(method, params);
}
           

Java文檔

  • kurento-jsonrpc-server

Json-Rpc用戶端

這是kurento-jsonrpc-server的Java用戶端,或者其他任何實作JSON-RPC協定的WebSocket伺服器。它允許Java程式通過JSON-RPC調用kurento-jsonrpc-server。也被釋出為Maven的依賴項,可以将其添加到項目的pom:

<dependency>
    <groupId>org.kurento</groupId>
    <artifactId>kurento-jsonrpc-server</artifactId>
    <version>6.6.1-SNAPSHOT</version>
</dependency>
           

建立用戶端

與伺服器相反,用戶端與架構無關,是以它可以用于正常的java應用程式、java EE、Spring…。建立一個向服務端發送請求的用戶端是非常簡單的。将伺服器的URI傳遞給JsonRpcClientWebSocket的構造函數,這裡假設它部署在同一台機器上:

發送請求

JSON-RPC調用是通過向伺服器發送Request對象來表示的。該對象具有以下成員:

  • jsonrpc: 指定JSON-RPC協定版本的字元串,本例中為“2.0”
  • method: 包含要調用的方法的名稱的字元串
  • params: 儲存在方法調用期間使用的參數值。可以省略此成員,并且該類型由伺服器定義
  • id: 用戶端辨別符。如果請求不包括該值,則假設為通知。如果包含,則服務端将在Response對象中使用相同的值進行應答。此成員用于關聯兩個對象之間的上下文。

以上這些成員中,使用者隻需設定“method”和“params”,因為其他兩個由底層庫管理。

上一節中定義的服務端需要一個JsonObject對象,并且隻響應echo方法,傳回請求中的“params”。對client.sendRequest(request)響應的***params***被包裹在Response對象中發送回用戶端:

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);
           

其他消息:通知

Notification是一個沒有“id”成員的Request對象。作為Notfication的Request對象表示用戶端對相應的Response對象不感興趣,是以不需要将Response對象傳回給用戶端。根據定義,通知是不可确認的,因為它們沒有要傳回的Response對象。是以,用戶端不會發現到任何錯誤(例如:“無效參數”、“内部錯誤”):

服務端響應

當伺服器接收到RPC調用時,它将回應一個Response,但Notification除外。Response表示為單個JSON對象,成員如下:

  • jsonrpc: 指定JSON-RPC協定版本的字元串,本例中為“2.0”
  • result: 這個成員隻有在成功的情況下才會存在。該值由伺服器被調用的方法确定
  • error: 此成員僅在調用期間觸發錯誤時存在。類型是一個Error對象
  • id: 這是一個必需的成員,必須與Request中id一緻。

Response将有“result”或“error”成員,但兩者不能同時存在。

Error對象

當RPC調用遇到錯誤時,Response對象包含Error成員對象,該成員對象具有以下成員:

  • code: 訓示錯誤類型的數字
  • message: 對錯誤的簡短描述
  • data: 包含錯誤附加資訊的原始值或結構化值。這可以省略,并由伺服器定義(例如,詳細錯誤資訊、嵌套錯誤等)。

添加連接配接監聽器

用戶端提供了為某些連接配接事件設定偵聽器的功能。使用者可以定義一個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);
           

管理心跳

正如服務端中所指出的,有一種心跳機制會定期發送ping消息。用戶端可以通過以下方法進行控制:

  • enableHeartbeat: 啟用心跳機制。預設間隔為5s,但這可以通重載該方法來更改,該方法接收一個數字作為參數。
  • disableHearbeat: 關閉心跳機制

更改預設逾時

不僅ping消息的間隔時間是可配置的。其他逾時時間也是配置的:

  • 連接配接逾時: 用戶端連接配接伺服器時,等待建立連接配接成功的時間。
  • 空閑逾時: 如果在該時間段内沒有發送任何消息,則該連接配接被視為空閑狀态并關閉。
  • 請求逾時: 伺服器應該在一定的時間内響應請求。如果消息在此期間未被應答,則被認為伺服器沒有收到請求,用戶端将産生TransportException。

Java文檔

  • kurento-jsonrpc-client

Json-Rpc JS用戶端

這是kurento-jsonrpc-server的Javascript用戶端,或者任何其他實作JSON-RPC協定的WebSocket伺服器。它允許Javascript程式對任何jsonrpc-server進行JSON-RPC調用。被釋出為一個浏覽器依賴。

JsonRpcClient

建立用戶端

要建立發送請求的用戶端,需要建立一個配置對象,如下所示:

var configuration = {
      hearbeat: 5000,
      sendCloseMessage : false,
      ws : {
        uri : ws_uri,
        useSockJS: false,
        onconnected : connectCallback,
        ondisconnect : disconnectCallback,
        onreconnecting : disconnectCallback,
        onreconnected : connectCallback
      },
      rpc : {
        requestTimeout : 15000,
        treeStopped : treeStopped,
        iceCandidate : remoteOnIceCandidate,
      }
    };

var jsonRpcClientWs = new JsonRpcClient(configuration);
           

這個配置對象有幾個選項:一方面是關于傳輸的配置,另一方面是關于用戶端在獲得響應時必須調用的方法的配置。此外,它還可以配置心跳間隔,還可以配置在關閉連接配接之前是否發送消息。

  • Configuration
{
    heartbeat: interval in ms for each heartbeat message,
    sendCloseMessage: true / false, before closing the connection, it sends a close_session message,
    ws: {
        uri: URItoconntectto,
        useSockJS: true(useSockJS)/false(useWebSocket)bydefault,
        onconnected: callback method to invoke when connection is successful,
        ondisconnect: callback method to invoke when the connection is lost,
        onreconnecting: callback method to invoke when the client is reconnecting,
        onreconnected: callback method to invoke when the client succesfully reconnects
    },
    rpc: {
        requestTimeout: timeoutforarequest,
        sessionStatusChanged: callback method for changes in session status,
        mediaRenegotiation: mediaRenegotiation
        ...
    [Other methods you can add on rpc field are:
treeStopped : treeStopped
   iceCandidate : remoteOnIceCandidate]
    }
}
           

如果定義了心跳,用戶端每隔x毫秒就向伺服器發送ping以保持連接配接。

發送請求

JSON-RPC調用就是通過發送方法發送一個Request對象給伺服器。Request對象有以下成員:

  • method: 包含要調用方法名稱的字元串。
  • params: 用于儲存方法調用時的參數值。可以省略此成員,該類型由伺服器定義。是一個json對象。
  • callback: 錯誤和響應的回調方法。在請求結束時調用此方法。
var params = {
             interval: 5000
              };

jsonrpcClient.send(“ping”, params , function(error, response){
         if(error) {
            ...
         } else {
            ...
         }
      });
           

服務端響應

當伺服器接收到RPC調用時,傳回一個Response,Notification除外。Respone表示為JSON對象,成員如下:

  • jsonrpc: 指定JSON-RPC協定版本的字元串,本例中為“2.0”
  • result: 這個成員隻有在成功的情況下才會存在。該值由伺服器被調用的方法确定
  • error: 此成員僅在調用期間觸發錯誤時存在。類型是一個Error對象
  • id: 這是一個必需的成員,必須與Request中id一

Response包括“result”或“error”成員,但兩者不能同時存在。

Error對象

當RPC調用遇到錯誤時,Response對象包含Error成員對象,該成員對象具有以下成員:

  • code: 訓示錯誤類型的數字
  • message: 對錯誤的簡短描述
  • data: 包含錯誤附加資訊的原始值或結構化值。這可以省略,并由伺服器定義(例如,詳細錯誤資訊、嵌套錯誤等)。

其他方法

  • close: 由用戶端顯式關閉jsonRpcClient。
  • reconnect: 嘗試重新連接配接。
  • forceClose: 它用于測試,強制關閉連接配接。

WebSocket重連

jsonrpc用戶端使用的webSocket具有重連功能,允許連接配接始終處于活動狀态。

當以下任何情況發生時,将觸發相應狀态對應的回調方法:

  • onConnected
  • onDisconnected
  • onReconnecting
  • onReconnected

下面示例為相關的配置對象,這個對象是jsonrpc用戶端的配置對象的一部分:

{
   uri: URItoconntectto,
   useSockJS: true(useSockJS)/false(useWebSocket)bydefault,
   onconnected: callback method to invoke when connection is successful,
   ondisconnect: callback method to invoke when the connection is lost,
   onreconnecting: callback method to invoke when the client is reconnecting,
   onreconnected: callback method to invoke when the client succesfully reconnects
}
           

JSON-RPC加密連接配接

從Chrome M47開始,隻允許安全源(HTTPS或來自本地主機的HTTP)對getUserMedia進行調用請求。由于Kurento嚴重依賴JSON-RPC庫作為應用的信令部分,是以需要JSON-RPC伺服器提供安全的WebSocket連接配接(WSS),否則用戶端将接收mixed content錯誤,因為不安全的WS連接配接可能不會通過安全的HTTPS連接配接進行初始化。

JSON-RPC服務端加密

在Spring中,啟用安全的WebSocket連接配接相當簡單。唯一的要求是擁有一個證書,或者是自簽名的,或者是由證書頒發機構頒發的。證書必須存儲在keystore中,以便以後可以被:term:JVM使用。根據你是否已獲得了一個證書或希望生成自己的證書,你将需要執行不同的操作。

  • 證書頒發機構頒發的證書可以通過以下指令導入:
  • 可以使用以下指令生成儲存自簽名證書的密鑰存儲庫:
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
           

keystore.jks檔案必須放在項目的根路徑下,application.properties檔案必須放在*src/main/resources/*中,其内容如下:

server.port: 8443
server.ssl.key-store: keystore.jks
server.ssl.key-store-password: yourPassword
server.ssl.keyStoreType: JKS
server.ssl.keyAlias: yourKeyAlias
           

你可以自定義properties檔案存放的位置。當啟動基于Spring-Boot的應用時,需要定義一個宏*-Dspring.config.location=&ltpath-to-properties&gt*。更改keystore.jks檔案的位置,隻需更改鍵server.ssl.key-store即可。Spring項目的完整正式文檔可以在這裡找到。

JSON-RPC用戶端連接配接加密服務端

JSON-RPC用戶端可以連接配接到暴露安全連接配接的服務端。預設情況下,使用的WebSocket庫将嘗試驗證服務端證書。在使用自簽名證書的情況下,必須訓示用戶端跳過此驗證步驟。用戶端可以通過建立SslContextFactory對象進行設定實作。

SslContextFactory contextFactory = new SslContextFactory();
contextFactory.setValidateCerts(false);

JsonRpcClientWebSocket client = new JsonRpcClientWebSocket(uri, contextFactory);
           

術語表

這是一個術語詞彙表,經常出現在關于多媒體傳輸的讨論中。大多數術語都被描述并連結到維基百科、RFC或W3C相關文檔。有些術語是kurento特有的。

HTTP

超文本傳輸協定是一種适用于分布式、協同、超媒體資訊系統的應用協定。http是網際網路資料通信的基礎。

另外可以參考:RFC 2616

JAVA

Java是一種通用的計算機程式設計語言,它是并發的、基于類的、面向對象的,并且專門設計成盡可能少的實作依賴項。

JSON

JSON(JavaScript對象表示法)是一種輕量級的資料交換格式。它被設計成易于為人類了解和編寫,也易于對機器進行解析。

JSON-RPC

JSON-RPC是一個簡單的用JSON編碼的遠端過程調用協定。JSON-RPC允許将通知和多個調用發送到伺服器,這些調用可能會被無序地響應。

Kurento

Kurento是一個開發多媒體應用程式的平台。Kurento是英語“stream”的世界語。我們之是以選擇這個名字,是因為我們相信世界語原則對多媒體社群所需要的東西是鼓舞人心的:簡單、開放和普遍性。Kurento是開源的,在Apache2.0下釋出,有幾個元件,為大多數多媒體公共服務需求提供解決方案。這些元件包括:Kurento Media Server、Kurento API、Kurento Protocol和Kurento Client。

Kurento API

Kurento API是面向對象的API,用于建立控制媒體的媒體管道。它可以看作是Kurento Media Server的接口。它可以在Kurento Protocol或Kurento Client中使用。

Kurento Client

Kurento Client是程式設計庫(Java或JavaScript),在應用中它被用于控制Kurento Media Server。例如,有了這個庫,任何開發人員都可以建立一個Web應用程式,該應用程式使用Kurento Media Server從使用者Web浏覽器接收音頻和視訊,并将其處理并通過Internet再次發送回來。Kurento Client向應用程式開發人員公開Kurento API。

Kurento Protocol

通過JSON-RPC消息在KMS和用戶端之間進行通信。它基于WebSocket,它使用JSON-RPCV2.0消息來送出請求和發送響應。

KMS

Kurento Media Server

Kurento Media Server是Kurento的核心部件,因為它負責媒體的傳輸、處理、加載和記錄。

Maven

Maven是一個主要用于Java項目的建構自動化工具。

Sphinx

用于Brandtalk文檔的文檔生成系統。

另外可以參考:Easy and beautiful documentation with Sphinx

Spring Boot

Spring Boot是Spring的正常配置解決方案,用于建立獨立的、基于産品級的基于Spring的應用程式,你可以“隻運作”。[17]它對Spring平台和第三方庫采取了自己獨特的方式,這樣你可以最小配置的情況下使用Spring。

TCP

可靠的IP傳輸協定。TCP通信確定在傳輸過程中不會丢失任何資料包。是以,它在低帶寬或不可靠的環境中是最有用的。例如慢寬帶網絡或分組無線網。

UUID

通用唯一辨別符,也稱為全局唯一辨別符(GUID)。在分布式計算環境中,唯一隻是盡可能唯一,它不能保證是絕對唯一的,因為辨別符集是有限的大小(16個位元組)。

WebSocket

WebSockets

WebSocket規範(作為HTML 5計劃的一部分開發)定義了一個全雙工單套接字連接配接,通過它可以在用戶端和伺服器之間發送消息。

WSS

WebSockets Secure

WebSocket規範(作為HTML 5計劃的一部分開發)定義了一個全雙工單套接字連接配接,通過它可以在用戶端和伺服器之間發送消息。

繼續閱讀