Code Monkey home page Code Monkey logo

freeswitch-esl-all's Introduction

FreeSWITCH ESL ALL

Codacy Badge Jdk Version License Maven Central Gitter

特性

1、支持连接FreeSWITCH大规模集群
2、更易于集成使用
4、与spring boot 2.x深度整合,提供 starter
5、可动态配置

模块说明

freeswitch esl 客户端(详细信息,移步至子模块)
基于 freeswitch-esl 客户端示例(详细信息,移步至子模块)
基于 Spring boot 2.3.x, freeswitch-esl 客户端(详细信息,移步至子模块)

application.properties

    link.thingscloud.freeswitch.esl.inbound.servers[0].host=127.0.0.1
    link.thingscloud.freeswitch.esl.inbound.servers[0].port=8021
    link.thingscloud.freeswitch.esl.inbound.servers[0].timeout-seconds=5
    link.thingscloud.freeswitch.esl.inbound.servers[0].password=ClueCon
    link.thingscloud.freeswitch.esl.inbound.servers[2].host=127.0.0.2
    link.thingscloud.freeswitch.esl.inbound.servers[2].port=8021
    link.thingscloud.freeswitch.esl.inbound.servers[2].timeout-seconds=5
    link.thingscloud.freeswitch.esl.inbound.events=CHANNEL_CREATE CHANNEL_DESTORY 
    # 开启性能监控 - 事件驱动-业务逻辑处理时间
    link.thingscloud.freeswitch.esl.inbound.performance=true 
    link.thingscloud.freeswitch.esl.inbound.performanceCostTime=200 
    # 开启事件性能监控 - fs产生事件与应用接收到事件时间差
    link.thingscloud.freeswitch.esl.inbound.eventPerformance=false 
    link.thingscloud.freeswitch.esl.inbound.eventPerformanceCostTime=200 


application.yml

    link:
      thingscloud:
        freeswitch:
          esl:
            inbound:
              defaultPassword: ClueCon
              performance: false
              performanceCostTime: 200
              #read-timeout-seconds: 0
              servers:
                - host: 127.0.0.1
                  port: 8021
                  timeoutSeconds: 5
                - host: 127.0.0.2
                - host: 127.0.0.3
              events:
                - CHANNEL_CREATE
                - CHANNEL_DESTORY
基于 freeswitch-esl-spring-boot-starter 客户端示例(详细信息,移步至子模块)

使用说明

获取实例 
    InboundClient.getInstance()
    SpringBoot容器 : @Autowired inboundClient

可动态配置添加或删除远端地址
    添加远端地址
        a、inboundClient.option().addServerOption(new ServerOption(host, port));
        b、InboundClient.getInstance().option().addServerOption(new ServerOption(host, port));
    
    删除远端地址
        ServerOption serverOption = inboundClient.option().serverOptions().get(0);
        
        a、inboundClient.option().removeServerOption(serverOption);
        b、InboundClient.getInstance().option().removeServerOption(serverOption);
        
服务端连接监听器 ServerConnectionListener
    inboundClient.option().serverConnectionListener(serverConnectionListenerImpl);
        void onOpened(ServerOption serverOption);
        void onClosed(ServerOption serverOption);

配置动态获取或者删除  
    1、实现接口 InboundClientOptionHandler
    2、继承抽象类 AbstractInboundClientOptionHandler

使用须知

1、发送api建议采用异步操作,特别是originate命令
2、目前存在消息超时机制,应对服务端直接关机导致连接假死,设置readTimeoutSeconds参数值为0,可关闭此特性
3、为了提高性能,处理EslEvent时,使用Netty的Worker线程,如果处理逻辑涉及IO或者耗时操作,必须要将处理逻辑放在新线程里面处理,通过disablePublicExecutor参数设置

志同道合(微信) - 请备注来源

微信

LICENSE

Apache License, Version 2.0 Copyright (C) Apache Software Foundation

freeswitch-esl-all's People

Contributors

codacy-badger avatar dependabot[bot] avatar xhuanlee avatar zhouhailin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.