<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          libpomeloPomelo 的 C 語言客戶端

          聯(lián)合創(chuàng)作 · 2023-09-30 11:08

          libpomelo 是 Pomelo 的 C 語言客戶端 SDK。

          依賴

          使用

          創(chuàng)建客戶端實(shí)例

          // create a client instance.
          pc_client_t *client = pc_client_new();
          

          添加 listeners

          // add some event callback.
            pc_add_listener(client, "onHey", on_hey);
            pc_add_listener(client, PC_EVENT_DISCONNECT, on_close);
          

          Listener 定義

          // disconnect event callback.
          void on_close(pc_client_t *client, const char *event, void *data) {
            printf("client closed: %d.\n", client->state);
          }
          

          Pomelo defined listeners

          #define PC_EVENT_DISCONNECT "disconnect"
          #define PC_EVENT_TIMEOUT "timeout"
          #define PC_EVENT_KICK "onKick"
          

          連接服務(wù)器

           struct sockaddr_in address;
          
            memset(&address, 0, sizeof(struct sockaddr_in));
            address.sin_family = AF_INET;
            address.sin_port = htons(port);
            address.sin_addr.s_addr = inet_addr(ip);
          
            // try to connect to server.
            if(pc_client_connect(client, &address)) {
              printf("fail to connect server.\n");
              pc_client_destroy(client);
              return 1;
            }
          

          Send a notify

          // notified callback
          void on_notified(pc_notify_t *req, int status) {
            if(status == -1) {
              printf("Fail to send notify to server.\n");
            } else {
              printf("Notify finished.\n");
            }
            // release resources
            json_t *msg = req->msg;
            json_decref(msg);
            pc_notify_destroy(req);
          }
          // send a notify
          void do_notify(pc_client_t *client) {
            // compose notify.
            const char *route = "connector.helloHandler.hello";
            json_t *msg = json_object();
            json_t *json_str = json_string("hello");
            json_object_set(msg, "msg", json_str);
            // decref json string
            json_decref(json_str);
            pc_notify_t *notify = pc_notify_new();
            pc_notify(client, notify, route, msg, on_notified);
          }

          Send a request

          // request callback
          void on_request_cb(pc_request_t *req, int status, json_t *resp) {
            if(status == -1) {
              printf("Fail to send request to server.\n");
            } else if(status == 0) {
              char *json_str = json_dumps(resp, 0);
              if(json_str != NULL) {
                printf("server response: %s\n", json_str);
                free(json_str);
              }
            }
            // release relative resource with pc_request_t
            json_t *msg = req->msg;
            pc_client_t *client = req->client;
            json_decref(msg);
            pc_request_destroy(req);
            // stop client
            pc_client_stop(client);
          }
          // send a request
          void do_request(pc_client_t *client) {
            // compose request
            const char *route = "connector.helloHandler.hi";
            json_t *msg = json_object();
            json_t *str = json_string("hi~");
            json_object_set(msg, "msg", str);
            // decref for json object
            json_decref(str);
            pc_request_t *request = pc_request_new();
            pc_request(client, request, route, msg, on_request_cb);
          }
          
          瀏覽 28
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻第一页大香蕉 | 欧美成人性爱在线 | 偷拍黄色小视频 | 蜜臀久久99精品久久久久酒店 | 大香蕉综合在线 |