概述

当用户在创建发起直播实例或者观看直播实例时的.ChatCallback中传入chatCallback回调,聊天服务器就已经开启了,具体参考快速接入介绍中的发起观看创建实例的描述

private class ChatCallback implements ChatServer.Callback {
	@Override
	public void onChatServerConnected() {
		// 聊天服务器建立
	}
	@Override
	public void onConnectFailed() {
		// 聊天服务器连接失败
	} 
	@Override
	public void onChatMessageReceived(ChatServer.ChatInfo chatInfo) {//消息接收
		switch (chatInfo.event) {
			case ChatServer.eventMsgKey: // 聊天消息通知
				break;
			case ChatServer.eventCustomKey: // 自定义消息通知
				break;
			case ChatServer.eventOnlineKey: // 上线消息通知
				break;
			case ChatServer.eventOfflineKey: // 下线消息通知
				break;
			case ChatServer.eventQuestion: // 问答消息
				break;
		}
	}
	@Override
	public void onChatServerClosed() {
		
	}
}


//聊天服务器其他方法
//连接聊天服务器:
getBroadcast().connectChatServer ();
//关闭聊天服务器:
getBroadcast().disconnectChatServer ();

字段 描述
account_id 用户ID
user_name 用户昵称
avater 头像id
room 活动id
event 消息类型 (用于区分消息用途)
time 发送时间

上下线消息

消息体event字段说明:chatInfo.event = “online offline” 用户接受消息可以自定义上下线的内容

字段 描述
event online offline
OnlineData 描述
role 用户类型 host:主持人 guest:嘉宾 assistant:助手 user:观众
concurrent_user 房间内当前用户数
is_gag 是否被禁言
attend_count 参会人数

聊天消息

消息体event字段说明:chatInfo.event = “msg” 目前发起直播和观看直播中可以聊天。发起直播调用getBroadCast().sendChat()方法 。观看直播调用getWatchLive().sendChat()。

字段 描述
text 聊天内容 offline
VhallSDK.RequestCallback 回调信息

发起直播代码展示 && 观看直播代码展示(默认登录):

getBroadcast().sendChat(text, new VhallSDK.RequestCallback() { // 发起直播时聊天
	@Override
	public void success() {
		//发送成功
	}
	@Override
	public void failed(int errorCode, String reason) {
		//发送失败
	}
});
getWatchLive().sendChat(text, new VhallSDK.RequestCallback() {// 观看直播时聊天
	@Override
	public void success() {
		//发送成功
	}
	@Override
	public void failed(int errorCode, String reason) {
		//发送失败
	}
});

自定义消息

消息体event字段说明:chatInfo.event = “custom_broadcast

字段 描述
text 固定JSON格式

getBroadcast().sendCustom(text, new VhallSDK.RequestCallback() {//发直播自定义消息
	@Override
	public void success() {
		//发送成功
	}
	@Override
	public void failed(int errorCode, String reason) {
		//发送失败
	}
});

getWatchLive().sendCustom(text, new VhallSDK.RequestCallback() {//看直播自定义消息
	@Override
	public void success() {
		//发送成功
	}
	@Override
	public void failed(int errorCode, String reason) {
		//发送失败
	}
});

/**
 * 功能演示 模拟点击发送
 */
send_custom.setOnClickListener(new View.OnClickListener() {  
	@Override
	public void onClick(View v) {
		JSONObject json = new JSONObject();
		try {
			json.put("key0", "value");
			json.put("key1", "0000");
			json.put("key2", "微吼");
		} catch (JSONException e) {
			e.printStackTrace();
		}
		mPresenter.sendCustom(json);
	}
});

聊天记录

获取SDK聊天记录。聊天记录只在观看直播时候获取,调用acquireChatRecord()

字段 描述
showAll 显示当次直播聊天最多为20条,true显示所有聊天最条为20条
ChatRecordCallback 聊天记录回调

getWatchLive().acquireChatRecord(false, new ChatServer.ChatRecordCallback() {
	@Override
	public void onDataLoaded(List<ChatServer.ChatInfo> list) {
		//回调获取成功
	}
	@Override
	public void onFailed(int errorcode, String messaage) {
		//回调获取失败,查看错误信息
	}
});

错误码 描述
10030 身份验证出错
10402 当前活动ID错误
10403 活动不属于自己
10407 查询数据为空
10408 当前活动非直播状态
10409 参会信息不存在
10410 活动开始时间不存在

问答消息

消息体event字段说明:chatInfo.event = “question” 发送活动问答
目前只支持观看端发送活动问答。在用户登陆成功的情况下可以发送问答,问答每5分钟发送一次,避免一些用户恶意发送。调用sendQues()方法,发送问答信息。

getWatchLive().sendQuestion (text, new VhallSDK.RequestCallback() {
	@Override
	public void success() {
		// 发送成功 
	}
	@Override
	public void failed(int errorCode, String reason) {
		// 发送失败
	}
});
QuestionData 描述
id 问题的id
nick_name 昵称
content 提问内容
join_id 参会ID
created_at 创建时间
role_name 角色
is_open 是否为私密回答
QuestionData answer 参数和此消息体相同
错误码 描述
10601 不是直播
10602 参会者不存在
10603 5分钟内不可提问
10604 活动ID不能为空
10605 问题不能为空
10606 用户不能为空