云平台消息转发接口/群聊接口介绍

应用场景:

    后端需要主动向前端传递数据时,可通过此接口完成转发。

    多个前端之间互动(例如:在线聊天)需要实时推送消息时,可通过此接口快速实现功能。

代码示例:

    后端向前端指定用户传递数据


//前端先注册以等待接收消息
require(['jinyun_socket'],function(jinyun_socket){
    jinyun_socket.connect();
    jinyun_socket.onsystem=function(res){
        console.log('收到来自后端的消息:');console.log(res);
    }
});
//后端发送消息
cfc('jinyun_socket')->send2uid('你好',1);//发送给指定用户

    后端向某一组前端用户传递数据

//前端先注册以等待接收消息
require(['jinyun_socket'],function(jinyun_socket){
    jinyun_socket.connect(function(){
            jinyun_socket.join(1);//加入ID为1的组
     });
    
    jinyun_socket.onsystem=function(res){
        console.log('收到来自后端的消息:');console.log(res);
    }
});
//后端发送消息
cfc('jinyun_socket')->send2room('你好',1);//发送给用户组

    前端向指定前端用户发送消息

//前端先注册以等待接收消息
require(['jinyun_socket'],function(jinyun_socket){
    jinyun_socket.connect();
    jinyun_socket.onmessage=function(res){
        console.log('收到来自他人的消息:');console.log(res);
    }
    jinyun_socket.send2uid('你好!',2);//向ID为2的用户发送消息
});

    前端向指定用户组发送消息

//前端先注册以等待接收消息
require(['jinyun_socket'],function(jinyun_socket){
    jinyun_socket.connect();
    jinyun_socket.join(1);//加入聊天室
    jinyun_socket.onmessage=function(res){
        console.log('收到来自他人的消息:');console.log(res);
    }
    jinyun_socket.send2room('大家好!',1);//向ID为2的用户发送消息
});

注意事项:

    为方便开发者开发,系统默认以uid作为每个用户的身份ID($_SESSION['uid']),发送消息给指定用户时,需要传入的ID为指定用户的uid。因此使用以上功能,均要求用户已登陆!

    用户组ID(聊天室ID)由开发者自定义,用户加入某个组便可收到某个组的消息。

    用户需要接收某一类消息,需要先定义相应回调函数!典型如以上案例中的“onmessage”函数(用于接收他人发送的消息)和“onsystem”函数(用于接收来自后端的消息),用于接收系统发送的消息!

    

前端js库主要方法介绍:

require(['jinyun_socket'],function(jinyun_socket){
    jinyun_socket.connect();//连接云服务并登陆
    jinyun_socket.send2uid(message,uid);//向指定用户发送消息
    jinyun_socket.send2room(message,room_id);//向指定用户组(聊天室)发送消息
    jinyun_socket.join(room_id);//加入用户组(聊天室)
    jinyun_socket.leave(room_id);//离开用户组(聊天室)
    jinyun_socket.close();//退出并关闭连接
    jinyun_socket.onmessage=function(res){//声明该回调函数可接收来自他人发送的消息
    //onmessage 方法参数数据示例:
        res={'message':'消息内容','from_uid':'发送人ID','from_room':'发送组ID'};
    }
    jinyun_socket.onsystem=function(res){//声明该回调函数可接收来自后端发送的消息
    //onsystem 方法参数数据示例:
        res={'message':'消息内容','to_uid':'接收人ID','to_room':'接收组ID'};
    }
    jinyun_socket.onlogin=function(res){//声明该回调函数可接收他人登陆的消息
    //onlogin 方法参数数据示例:
        res={'uid':'登陆人ID'};
    }
    jinyun_socket.onlogout=function(res){//声明该回调函数可接收他人退出的消息
    //onlogout 方法参数数据示例:
        res={'uid':'退出人ID'};
    }
    jinyun_socket.onjoin=function(res){//声明该回调函数可接收他人加入组(聊天室)的消息
    //onjoin 方法参数数据示例:
        res={'uid':'加入人ID','room':'加入组ID'};
    }
    jinyun_socket.onleave=function(res){//声明该回调函数可接收他人退出组(聊天室)的消息
    //onleave 方法参数数据示例:
        res={'uid':'离开人ID','room':'离开组ID'};
    }
    
}

    小程序端的使用

    进云小程序框架已内置该接口,可以直接调用,使用方法如下。

    app.util.socket.connect();
    app.util.socket.onmessage=function(res){
        console.log('收到来自他人的消息:');console.log(res);
    }

主要要说明的是,和在前端js相比,小程序里面不用调用require方法加载js,而是直接使用app.util.socket对象,其他用法和前端js一致!有个要注意的地方是,调用connect方法时,可能不一定能立即连接成功,因此下面不要立即调用发送消息方法去发送消息!

    与老版本消息转发接口的不同

与老版消息转发接口相比,新版消息转发接口由于增加了js库和PHP端的接口类,对接口做了封装,因此使用起来非常方便!

例如,老版的需要手动生成签名字符串然后传给前端,再由前端发起websocket连接。

而新版接口只需直接在前端调用connect方法即可连接成功,然后注册相应方法以接收特定类型消息即可!

新版后端向前端发送消息也非常简单,直接调用接口类的send2uid方法即可!

返回

条结果""