直播聊天室Api接口

一、Socket接口文档 

聊天室socket消息收发

1、地址

http地址:

聊天室服务器地址:

http://chat.polyv.net:80

聊天室接口域名:

http://apichat.polyv.net:80

https地址:

聊天室服务器地址:

https://chat.polyv.net:443

聊天室接口域名:

https://apichat.polyv.net

2、连接聊天室服务器

var  supportsWebSockets = 'WebSocket' in window || 'MozWebSocket' in window;
if(supportsWebSockets) {
      socket = io.connect(chatHost, {
        'query': 'token=' + chatToken,
        'transports' : ['websocket']
      });
}else{
      socket = io.connect(chatHost, {
        'query': 'token=' + chatToken,
        'transports' : ['polling']
      });
}

备注:

a) 优先使用websocket的方式连接聊天室
b) chatHost = http://chat.polyv.net:80
c) chatToken 为令牌,目前可以设置为空

3、监听消息

socket.on(msg,callbak)
msg主要有:connect,disconnect,messgae
socket.on('connect', function() {
    //TODO
})
socket.on('disconnect', function() {
    //TODO
})
socket.on('message' , function(data) {
    var mData = JSON.parse(data);
    if (mData && mData.EVENT) {
        switch (mData.EVENT) {
            //TODO
        }
    }
})

注:'message'消息回调函数参数data为JSON字符串,需要先转换为JSON对象,每个data都会包含一个'EVENT'属性

4、'EVENT'属性

注:下面所列消息,如果只说明监听回调返回的数据,而没有说明发送的消息,页面均不可主动发送给服务器

LOGIN:

登录消息,登录房间的时候服务器会广播这一消息

发送:

socket.emit('message', JSON.stringify({
    EVENT: 'LOGIN',
    values: [userNick, userPic, userId], //登录用户信息,不可为空
    roomId: roomId, //当前房间号
    type: userType,//用户类型,可为空,teacher(教师)、assistant(助教)、manager(管理员)、slice(云课堂学员)
}));

监听回调返回的数据(此次省略处理数据的步骤,后面同):

{
    "EVENT":"LOGIN",
    "onlineUserNumber":3,
    "user": {
        "clientIp":"59.42.43.28",
        "nick":"广州观众/32199",
        "pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
        "roomId":"100781",
        "uid":"CxJj8Ap3C9jN1UHKAJ_V",    
        "userId":"1499917692338" 
        "userType": "" 
    }
}

说明

名称 类型 说明
onlineUserNumber number 当前房间在线总人数
clientIp 用户IP
nick 用户昵称
pic 用户头像
roomId 房间号
uid socket分配的id
userId 用户唯一标识
userType teacher、assistant、manager、slice 用户类型,目前有teacher(老师)、assistant(助教)、manager(管理员)、slice(云课堂学员)

LOGOUT

说明:登出消息,有人离开房间(包括刷新页面)时服务器会广播这一消息

监听回调返回数据:

EVENT: "LOGOUT",
onlineUserNumber: 3,
uid: "I_o3f4sHDzAHM4LVAJTX"
名称 类型 说明
onlineUserNumber number 当前房间在线总人数
uid string 离开人的socket.id

SPEAK:

说明:发言,接收别人的发言消息(不包括自己)

发送:

socket.emit('message', JSON.stringify({
    EVENT: 'SPEAK',
    values: [value],                //发言内容
    roomId: roomId                //当前房间号
}));

监听回调返回的数据:

{
    "EVENT": "SPEAK",
    "id": "f1e4a960-6abc-11e7-ac0a-379e251bb30e",
    "time": 1500274540278,
    "user": {
        "clientIp": "59.42.40.89",
        "nick": "rururu",
        "pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
        "roomId": "100781",
        "uid": "yP-HnXTEZyToxP0TAGCS",
        "userId": "1500274526077",
        "userType": "" 
    },
    "values": ["sadasd"]
}
名称 说明
id 消息唯一标志
time 时间戳
user 发言人
values 消息内容

GONGGAO:

说明:公告消息,此公告消息页面不主动发送,当管理员发言时,服务器会将管理员的消息做为公告处理,当重新进入页面时,如有公告,服务器会广播这一消息。

监听回调返回的数据:

{
    "EVENT": "GONGGAO",
    "content": "POLYV保利威视" 
}
名称 说明
content 公告内容

BULLETIN

说明:公告消息,此公告消息页面可主动发送,区别于“GONGGAO”消息。当重新进入页面时,如有公告,服务器会广播这一消息。

发送

socket.emit('message', JSON.stringify({
    EVENT: 'BULLETIN',
    roomId: roomId,    //当前房间号
    content: content,  //公告内容
}));

监听回调返回的数据:

EVENT: "BULLETIN",
content: "???/",
roomId: "105240"
名称 类型 说明
content string 公告内容
roomId number/string 当前房间号(重新进入房间收到这一消息不会带roomId)

SET_NICK:

说明: 昵称设置,当观众进入房间昵称为xx/观众+数字类型时才会提示设置,设置的昵称存在时间为5个小时

发送:

socket.emit('message', JSON.stringify({
    EVENT: 'SET_NICK',
    roomId: roomId, //当前房间号
    userId: userId, //用户唯一标识
    nick: nick//要设置的昵称
}));

监听回调返回的数据:

错误消息1:

{
    "EVENT":"SET_NICK",
    "message":"昵称已存在",
    "nick":"林林林",
    "status":"error",
    "userId":"1500285799522" 
}

错误消息2:

{
    "EVENT":"SET_NICK",
    "message":"您的昵称中含有违规词",
    "nick":"管理员",
    "status":"error",
    "userId":"1500285799522" 
}

错误消息3:

{
    "EVENT":"SET_NICK",
    "message":" 找不到该用户",
    "nick":"林林林",
    "status":"error",
    "userId":"1" 
}

错误消息4:

{
    "EVENT":"SET_NICK",
    "message":"缺少相关参数",
    "status":"error" 
}

设置成功消息:

{
    "EVENT":"SET_NICK",
    "message":"设置成功",
    "nick":"林林林",
    "status":"success",
    "userId":"1500285799522" 
}
名称 说明
message 消息内容
status 设置状态
nick 设置昵称
userId 用户id

FLOWERS:

说明:送花事件

发送:

socket.emit('message', JSON.stringify({
    EVENT: 'FLOWERS',
    roomId: roomId,//当前房间号
    nick: userNick,//送花人昵称
    uimg: userPic //送花人头像,为新增的属性,可不传
}));

监听回调返回的数据:

{
    "EVENT":"FLOWERS",
    "nick":"广州观众/81366",
    "uimg":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png" 
}
名称 说明
nick 送花人昵称
uimg 送花人头像(新增)

LIKES:

说明: 点赞事件

发送:

socket.emit('message', JSON.stringify({
    EVENT: 'LIKES',
    nick: userNick, //点赞人昵称
    count: likesnum, //当前点赞数,可不传
    roomId: roomId //当前房间号
}));

监听回调返回的数据:

{
    "EVENT":"LIKES",
    "count":160,
    "nick":"广州观众/81366" 
}
名称 说明
count 当前点赞总数,若发生消息的时候没传此属性,则不返回这个属性
nick 点赞人昵称

KICK:

说明: 踢人事件

发送:

var data = JSON.stringify({
    EVENT: 'KICK',
    values: [userName], //被踢出人昵称
    roomId: roomId,
    sign:sign //md5校验字符串
});
socket.emit('message',data);

监听回调返回的数据:

{
    "EVENT":"KICK",
    "user": {
        "clientIp":"59.42.40.89",
        "nick":"林林林",
        "pic":"//livestatic.videocc.net/v_60/assets/wimages/missing_face.png",
        "roomId":"100781",
        "uid":"118GWVRA24PR14coA3bz",
        "userId":"1500275476199",
        "userType":"" 
    }
}
名称 说明
user 被踢用户对象

REMOVE_CONTENT:

说明:删除某条聊天记录,目前需要通过HTTP接口调用

监听回调返回的数据:

{
    "EVENT":"REMOVE_CONTENT",
    "content":"asd",
    "id":"54b04e90-6acd-11e7-abcd-a985dda00975",
    "roomId":"100781" 
}
名称 说明
content 删除的内容
id 删除内容对应的id
roomId 房间号

REMOVE_HISTORY:

说明:清空聊天记录

发送:

var data=JSON.stringify({
    EVENT:'REMOVE_HISTORY',
    roomId: roomId,
    sign:sign
});
socket.emit('message',data);

监听回调返回的数据:

{
    "EVENT":"REMOVE_HISTORY" 
}

CLOSEROOM:

说明:关闭聊天室

发送:

var data = JSON.stringify({
    EVENT:'CLOSEROOM',
    roomId:roomId,
    sign:sign    //md5校验字符串
});
socket.emit('message',data);

监听回调返回的数据:

{
    "EVENT":"CLOSEROOM",
    "value": {
      "closed":true,    
      "roomId":"100781" 
    }
}
名称 说明
closed true为关闭,false为开启
roomId 房间号

CLOSE_DANMU:

说明:关闭弹幕

监听回调返回的数据:

{
    "EVENT": "CLOSE_DANMU",
    "isClose": true
}
名称 说明
isClose true为关闭,false为开启

CUSTOMER_MESSAGE:

说明:自定义消息接收事件,目前只能通过后台管理员调用HTTP接口发送消息,可参考http://dev.polyv.net/2016/12/send-chat/

监听回调返回的数据:

{
    "EVENT" : "CUSTOMER_MESSAGE",
    "roomId" : 100781,
    "image":"http://livestatic.videocc.net/assets/wimages/pc_images/logo.png",
    "content" : "这是一条自定义消息" 
}
名称 说明
roomId 房间号
image 消息图片(根据发送的消息是否有图片决定)
content 消息内容

   

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...