metaRTC新增mqtt支持

概述

MQTT是为了物联网场景设计的基于TCP的Pub/Sub协议,有许多为物联网优化的特性,metaRTC6.0新增了mqtt协议实现,不需要第三方类库,实现为纯C代码实现。

源码下载

https://github.com/metartc/metaRTC

https://gitee.com/metartc/metaRTC

yang_config.h配置文件修改

#define Yang_Enable_Datachannel 1
#define Yang_Enable_Mqtt        1
#define Yang_Enable_Json        1
#define Yang_Enable_Openh264    1

修改Yang_Enable_Mqtt为1

c/c++ create and destroy

int32_t yang_create_mqtt(YangMqtt* mqtt,YangAVInfo* avinfo,YangMqttCallback* mqttcb);

void yang_destroy_mqtt(YangMqtt* mqtt);

c/c++ simple sample

    #include <yangmqtt/YangMqtt.h>

    void yang_test_mqtt_receive(void* session,char* topic,char* msg){    
        yang_trace("\nmsg===%s",msg);
    }

    YangMqtt mqtt={0};
    YangMqttCallback callback;

    callback.session=NULL;
    callback.mqtt_receive=yang_test_mqtt_receive;

    yang_create_mqtt(&mqtt,&avinfo,&callback);

    mqtt.connect(mqtt.session,16*1024,16*1024,(char*)"192.168.0.66",1883,NULL,NULL);
    mqtt.subscribe(mqtt.session,(char*)"metaRTC");
    
    char c=0;
    int32_t count=0;
    char msg[128]={0};
    while((c=getchar())!='q'){
        if(c=='p'){
            memset(msg,0,sizeof(msg));
            sprintf(msg,"This is test %d",count++);
            yang_trace("\n publish msg %s",msg);
            mqtt.publish(mqtt.session,(char*)"metaRTC",msg,yang_strlen(msg));
        }
    }
    mqtt.close(mqtt.session);
    yang_destroy_mqtt(&mqtt);

html simple sample

<script src="js/mqtt.min.js" ></script>
<script type="text/javascript">
    var client = null;
    // called when the client connects
    function onConnect() {
    // Once a connection has been made, make a subscription and send a message.
        console.log("connect success!");
        client.subscribe("metaRTC");
    }
    // called when the client loses its connection
    function onConnectionLost(responseObject) {
        if (responseObject.errorCode !== 0) {
            console.log("onConnectionLost:"+responseObject.errorMessage);
        }
    }
    // called when a message arrives
    function onMessageArrived(message) {
        console.log("onMessageArrived:"+message.payloadString);
    }
    function yang_mqtt_connect(hostname, port,  clientId){

        if(client==null) client = new Paho.Client(hostname, port, clientId);
        // set callback handlers
        client.onConnectionLost = onConnectionLost;
        client.onMessageArrived = onMessageArrived;
        // connect the client
        client.connect({onSuccess:onConnect});
    }
    
    function makeid() {
        var text = "";
        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

        for (var i = 0; i < 15; i++)
            text += possible.charAt(Math.floor(Math.random() * possible.length));
        return text; //+text;
    }

    function test(){
        yang_mqtt_connect("192.168.0.66",8083,makeid());
    }
    function test2(){
        if(client!=null) client.disconnect();
    }
    function yang_publish(){
        var message = new Paho.Message(msg1.value);
        console.log("publish msg:"+msg1.value);
        message.destinationName = "metaRTC";
        client.send(message);
    }
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

metaRTC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值