<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # RPC通道 ## 數據包 UBot的所有RPC數據包均使用[JSON-RPC 2.0](http://wiki.geekdream.com/Specification/json-rpc_2.0.html)進行編碼 >[warning] UBot只能處理標準JSON,注釋等擴展內容將導致解析失敗! 數據包示例: ```json // Request // 存在id字段(即使為null)表示常規請求 // 不存在id字段表示通知模式,服務端只會處理請求,不會給予回應 { "json-rpc":"2.0", "id":55, "method":"get_user_name", "params":[ "Account1", "123456789" ] } // Response { "id":55, "jsonrpc":"2.0", "result":"UBotTest" } ``` ## 命名規范 所有RPC操作的方法名、參數名均使用蛇形命名法(Snake Case) 示例: ``` hello_world get_token ``` 所有RPC參數,如非特別聲明,均按位置調用 ```json {params:["hello","world"]} //按位置調用 {params:{"a":"hello","b":"world"}} //按名稱調用 ``` ## 通訊協議 UBot的所有RPC都是 全雙工類型 的RPC,即Router可以調用客戶端的函數,客戶端也可以調用Router的函數 從`JSON-RPC 2.0`規范的角度來講,無論是傳輸層的服務端還是客戶端,都同時是`JSON-RPC 2.0`中所講的Server和Client RPC支持以下幾種連接方式 >[warning] 盡管可以同時使用多種方式(同時存在多個連接),但**極度不推薦**這么做 ### Websocket 模式 所有的UBot RPC都支持且推薦使用Websocket協議連接 - 全雙工模式:直接連接 >[info] 任何情況下,都應該首選該模式 - Server-Client模式:在URL中加入參數`norequest=1`,此時客戶端可以向Router發送請求,但Router不會向客戶端發送任何請求(如 觸發事件),Router只會回應客戶端的請求 >[info] 此模式往往用于難以實現Peer模式的平臺,通過建立兩個Websocket連接,一個負責向Router發送請求,另一個負責接收來自Router的請求 ### HTTP Post 模式 通過向RPC連接發送POST請求,提交內容為請求信息(`application/json`),返回內容為響應信息(`application/json`)或空(對于`JSON-RPC`中定義的通知而言,不作任何響應) 該模式只能向Router發送請求,無法接收請求 請求示例: ``` // Request POST /api/app?id=Echo&token=Ciq-h4_7TV26egu0aPBi1A HTTP/1.1 Content-Length: 130 Content-Type: application/json Host: localhost:5000 { "json-rpc":"2.0", "id":0, "method":"get_user_name", "params":[ "Account", "1234" ] } // Response HTTP/1.1 200 OK Content-Length: 46 Content-Type: application/json; charset=utf-8 {"id":0,"jsonrpc":"2.0","result":"HelloWorld"} ``` ### Webhook 模式 通過注冊Webhook,在Router向客戶端發出請求時,自動Post某個網址,并將返回結果作為JSON-RPC的響應對象 該模式只能接收Router的請求,無法**主動**向Router發出任何請求 如果您接收到的是請求對象,您必須返回JSON-RPC的響應對象,除非您接收到的是通知 您可以通過返回一個同時包含響應對象和請求對象的數組來**被動**地向Router發出請求(這些請求的響應結果又會作為數據以webhook的形式調度給您,您可以繼續回復請求對象向Router繼續發送請求。如果您不需要回應,則可以使用`JSON-RPC`中定義的通知模式發出請求) #### Webhook 管理 請參考API列表Webhook控制器部分 ## RPC庫 JSON-RPC 2.0是使用較廣泛的一種協議,全雙工模式(即Peer模式,部分庫只支持Server-Client模式)也是較常見的一種實現方式,大部分平臺都可以找到支持over Websocket的庫 - Golang平臺:[wsrpc](https://github.com/1354092549/wsrpc) - .NET平臺:[microsoft/vs-streamjsonrpc](https://github.com/microsoft/vs-streamjsonrpc) - Node.js平臺:[json-rpc-peer](https://github.com/JsCommunity/json-rpc-peer) - Dart平臺:[dart-lang/json_rpc_2](https://github.com/dart-lang/json_rpc_2) >[info] 以上RPC庫并非由本人維護,若遇到問題請咨詢對應作者
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看