>  기사  >  위챗 애플릿  >  Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)

Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)

藏色散人
藏色散人앞으로
2021-09-21 17:27:023697검색

최근 음성 라이브 방송 기능이 있는 작은 프로그램을 만들고 있는데, 검색해 보니 환신 IM 통합 기능을 사용하고 있는데, 실제로 환신을 사용해 작은 프로그램을 만드는 사람이 거의 없습니다. 거의 없고, Huanxin은 2월부터 더 이상 코드를 업데이트하지 않을 것이라고 공식적으로 밝혔습니다(구체적인 이유는 묻지 않았습니다. WeChat 자체가 채팅 도구이므로 별로 유용하지 않을 수도 있습니다)

저희 제품은 채팅방 기능을 이용했는데 H5 클라이언트 로그인이 완료되면 채팅방에 들어갈 수 있습니다:

 WebIM.conn.open(options);
 WebIM.conn.joinChatRoom(option1);

미니 프로그램에서는 같은 방법이 작동하지 않고 계속 오류가 발생합니다:

Cannot read property 'sendIQ' of undefined

바이두에서 검색해보니 채팅방 참여는 로그인 성공 후 콜백에 들어가야 한다고 해서 소스코드를 확인해 보니 Connection.js에서

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);
    }

로그인 성공을 위한 내부 콜백이 있고 _login(data.data, conn) 메소드가 콜백에서 호출됩니다.

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


};

로그인 메소드를 실행한 후 _loginCallback 콜백이 있습니다.

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;
};

중단하여 실행이 else에 도달하면 if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED) 로그인 성공이므로 채팅방 참여를 위한 콜백을 이 판단에 넣어야 합니다. 구체적인 방법은 다음과 같습니다.

//项目中封装一个加入聊天室函数
 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);

Huanxin Connection.js를 수정합니다. code:

//登录代码
connection.prototype.open = function (options) {

        var suc = function (data, xhr, myName) {
            //callBack传入加入聊天室回调
            _login(data.data, conn, options.callBack);
        };
        var options = {
            url: apiUrl + '/' + orgName + '/' + appName + '/token',
            data: loginfo,
             success: suc || _utils.emptyfn,
             //添加加入聊天室的回调函数
             callBack: options.callBack,
            error: error || _utils.emptyfn
        };
    }
};
//_login代码
var _login = function (options, conn, callBack) {
     
    var callback = function (status, msg) {
    //把加入聊天室函数传给_login回调函数
      _loginCallback(status, msg, conn, callBack);
    };
};
//_loginCallback代码
var _loginCallback = function (status, msg, conn,callBack) {
    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) {
      //登录成功执行加入聊天室
       callBack();
    } 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;
};

구체적인 아이디어는 Huanxin 애플릿 코드에 함정이 많기 때문에 문제가 발생하면 소스 코드를 더 살펴보세요. 일부 기능은 직접 수정해야 합니다. 이것이 Huanxin 작업 순서입니다. 내 질문에 답해 주세요:

Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)

관련 학습 권장 사항: Mini 프로그램 개발 튜토리얼

위 내용은 Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제