esl 简介

Event Socket 简介

  • Event Socket 是操控FreeSWITCH的“瑞士军刀”。它可以通过Socket方式使用FreeSWITCH提供的所有的App程序和API命令。
  • 由于绝大多数程序语言都支持Socket,因而他几乎可以跟任何语言开发的程序通信。
  • 它避免了开源许可证的兼容性问题。

Event Socket Library(ESL) 简介

  • 对Event Socket的封装

最简单的Event Socket程序

#include "esl.h"
#include <iostream>

int main()
{
    // 初始化一个handle,用于标识到FreeSWITCH的Socket连接
    esl_handle_t handle = {{ 0 }};

    // 连接服务器,如果成功 handle 就代表连接成功了
    esl_status_t status = esl_connect(&handle, "172.16.160.12", 8021, NULL, "ClueCon");

    // 发送一个命令,并接收返回值
    esl_send_recv(&handle, "api status\n\n");

    // last_sr_event 应该是 last server response event,即针对上面命令的响应
    if (handle.last_sr_event && handle.last_sr_event->body)
    {
        std::cout << handle.last_sr_event->body;
    }

    // 断开连接 
    esl_disconnect(&handle);

    return 0;
}

ESL 事件模型

#include "esl.h"
#include <iostream>

/**
 * Brief: esl 事件模型
 * Author: Cynhard
 * Date: 20160906
 */
int main()
{
    // 初始化一个handle,用于标识到FreeSWITCH的Socket连接
    esl_handle_t handle = {{ 0 }};

    // 连接服务器,如果成功 handle 就代表连接成功了
    esl_status_t status = esl_connect(&handle, "172.16.160.12", 8021, NULL, "ClueCon");

    // 注册事件
    esl_events(&handle, ESL_EVENT_TYPE_PLAIN, "ALL");  // 注册所有事件

    // 所有的App和事件都以同步的方式执行
    handle.event_lock = 1;

    // 接收事件
    while ((status = esl_recv_event(&handle, 1, NULL)) == ESL_SUCCESS) 
    {
        if (handle.last_ievent)
        {
            // process event
            // ...
        }
    }

    // 关闭连接
    esl_disconnect(&handle);

    system("pause");

    return 0;
}

你可能感兴趣的:(FreeSWITCH,音视频)