Wie verwende ich das Miniprogramm zur Integration von Huanxin IM? (Beigefügtes Codebeispiel)

藏色散人
Freigeben: 2022-01-22 09:10:29
nach vorne
3698 Leute haben es durchsucht

Kürzlich erstelle ich ein kleines Programm mit Sprach-Live-Übertragungsfunktion und verwende die Huanxin-IM-Integrationsfunktion. Da ich gesucht habe, gibt es tatsächlich nur sehr wenige Leute, die Huanxin verwenden, um kleine Programme zu erstellen. Es gibt nur wenige, und Huanxin hat offiziell erklärt, dass der Code ab Februar nicht mehr aktualisiert wird (ich habe nicht nach dem genauen Grund gefragt, vielleicht ist WeChat selbst ein Chat-Tool und daher nicht sehr nützlich)

Unser Produkt muss Verwenden Sie die Chatroom-Funktion, und wir haben es früher mit H5 gemacht. Nachdem die Client-Anmeldung abgeschlossen ist, können Sie dem Chatroom beitreten:

 WebIM.conn.open(options);
 WebIM.conn.joinChatRoom(option1);
Nach dem Login kopieren

Die gleiche Methode funktioniert nicht mit dem Miniprogramm und es meldet ständig einen Fehler:

Cannot read property 'sendIQ' of undefined
Nach dem Login kopieren

Baidu suchte und sagte, dass der Beitritt zum Chatroom nach erfolgreicher Anmeldung in den Rückruf eingefügt werden sollte, also habe ich den Quellcode von Connection.js überprüft und Folgendes gefunden:

connection.prototype.open = function (options) {


    var pass = _validCheck(options, this);

    if (!pass) {
        return;
    }
    var conn = this;

    if (conn.isOpening() || conn.isOpened()) {
        return;
    }

    if (options.accessToken) {
        options.access_token = options.accessToken;
        _login(options, conn);
    } else {
       //登录成功的回调函数
        var suc = function (data, xhr, myName) {
            conn.context.status = _code.STATUS_DOLOGIN_IM;
            conn.context.restTokenData = data;
            if (data.statusCode != '404' && data.statusCode != '400') {
                wx.showToast({
                    title: '登录成功',
                    icon: 'none',
                    duration: 4000
                });
            }
            //回调成功后执行这个方法
            _login(data.data, conn);
           
        };
        
        var options = {
            url: apiUrl + '/' + orgName + '/' + appName + '/token',
            data: loginfo,
             success: suc || _utils.emptyfn,
            error: error || _utils.emptyfn
        };
        _utils.ajax(options);
    }
Nach dem Login kopieren

Es gibt einen internen Rückruf für eine erfolgreiche Anmeldung und ein _login(data.data, conn)-Methode wird im Rückruf aufgerufen:

//具体里面执行什么去源代码查看,我就不贴代码了
var _login = function (options, conn) {
    
    var callback = function (status, msg) {
      _loginCallback(status, msg, conn);
    };


};
Nach dem Login kopieren

Nach dem Ausführen der Login-Methode gibt es einen _loginCallback-Rückruf:

var _loginCallback = function (status, msg, conn) {
    var conflict, error;
    //console.log('_loginCallback 1', Strophe.Status, status, msg)
    if (msg === 'conflict') {
        conflict = true;
    }
    console.log(status)
    if (status == Strophe.Status.CONNFAIL) {
     
    } else if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED) {
      //登录成功
       
    } else if (status == Strophe.Status.DISCONNECTING) {
  
    } else if (status == Strophe.Status.DISCONNECTED) {
      
    } else if (status == Strophe.Status.AUTHFAIL) {
     
    } else if (status == Strophe.Status.ERROR) {

    }
    conn.context.status_now = status;
};
Nach dem Login kopieren

Durch Unterbrechen habe ich festgestellt, dass, wenn die Ausführung else if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED), die Anmeldung ist erfolgreich. Daher muss der Rückruf zum Beitritt zum Chatroom in diesem Urteil platziert werden. Die spezifische Methode lautet wie folgt:

//项目中封装一个加入聊天室函数
 joinRoom: function () {
    var option1 = {};
    var option2 = {};
    //加入聊天室
    WebIM.conn.joinChatRoom(option1);
    WebIM.conn.joinChatRoom(option2);
  };
   //在环信登录函数中添加一个自己的回调:
    var options = {
      apiUrl: WebIM.config.apiURL,
      user: userId + '',
      pwd: userId + '',
      grant_type: "password",
      appKey: WebIM.config.appkey,
      //自己添加的回调函数
      callBack:function(){
      //调用加入聊天室
        that.joinRoom();
      }
    };
    WebIM.conn.open(options);
Nach dem Login kopieren

Ändern Sie die Huanxin-Verbindung.js Code:

rrree

Da der Huanxin-Applet-Code viele Fallstricke aufweist, schauen Sie sich den Quellcode genauer an. Dies ist der Huanxin-Arbeitsauftrag Beantworte meine Frage:

Wie verwende ich das Miniprogramm zur Integration von Huanxin IM? (Beigefügtes Codebeispiel)

Verwandte Lernempfehlungen: Mini-Tutorial zur Programmentwicklung

Das obige ist der detaillierte Inhalt vonWie verwende ich das Miniprogramm zur Integration von Huanxin IM? (Beigefügtes Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage