直播间场景实践
准备工作
在开始之前,请确保已创建应用并完成客户端 SDK 集成。
直播间状态管理
直播间状态通常包括:待开始、直播中、暂停、结束、回放中。直播间状态由业务侧进行维护。
游客模式
适用场景:未在业务册注册登录的用户进入直播间。
建议通过注册用户获取 Token 连接融云,并在业务侧限制游客是否可以发 送消息。
创建并加入聊天室
- 应用服务端通过 Server API 创建聊天室,客户端获取聊天室 ID 后可加入聊天室。
- 默认同一用户不能同时加入多个聊天室,可在控制台启用单个用户加入多个聊天室。
- 加入聊天室时可通过客户端 SDK 获取最新的历史消息(默认 10 条,最多 50 条),您无法通过客户端 SDK 拉取指定的消息类型, 但可在控制台设置加入聊天室获取的指定消息。 如需拉取更多消息,可开启聊天室消息云存储。
示例代码:
- Server SDK in Java
- Server SDK in PHP
- Server SDK in Go
Java
RongCloud rongCloud = RongCloud.getInstance("appKey", "appSecret");
//自定义 api地址方式
//RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret,api);
Chatroom chatroom = rongCloud.chatroom;
ChatroomDataModel chatroomDataModel = new ChatroomDataModel().setId("chatroomId3");
ResponseResult result2 = chatroom.createV2(chatroomDataModel);
System.out.println("createV2: " + result2.toString());
PHP
require "./../../RongCloud.php";
define("APPKEY", '');
define('APPSECRET','');
use RongCloud\RongCloud;
use RongCloud\Lib\Utils;
/**
* 创建聊天室
*/
function create()
{
$RongSDK = new RongCloud(APPKEY,APPSECRET);
$chatroom = [
['id'=> 'phpchatroom4',//聊天室 id
'name'=> 'phpchatroom1']//聊天室 name
];
$result = $RongSDK->getChatroom()->create($chatroom);
Utils::dump("创建聊天室",$result);
}
create();
Go
func TestRongCloud_ChatRoomCreateNew(t *testing.T) {
rc := NewRongCloud(
os.Getenv("APP_KEY"),
os.Getenv("APP_SECRET"),
)
// 创建聊天室
whiteUserIds := []string{"111", "222", "333"}
err := rc.ChatRoomCreateNew(
"chatroom001",
WithChatroomDestroyType(1),
WithChatroomDestroyTime(120),
WithChatroomIsBan(true),
WithChatroomWhiteUserIds(whiteUserIds),
)
t.Log(err)
}
常见问题:
- 客户端是否支持直接创建聊天室? 不支持,仅服务端可创建聊天室。
- 用户未加入聊天室也能发送消息? 默认允许,开启 SDK 用户不在聊天室中不能发送消息功能后,则需加入聊天室才能发送消息。
- 用户加入或退出聊天室时,其他聊天室成员是否有感知? 默认无感知,但您可以通过聊天室成员变化监听功能,开启后用户加入、退出聊天室后,向其他聊天室成员发送回调通知。您可以在控制台可以免费开启此功能,开启 15 分钟后生效。
- 用户多端登录时,其中 1 台设备退出聊天室后,别的设备不会同时退出吗? 默认不会。如您需其他端都退出,可以在控制台免费开启多端同时在线情况下,一端退出聊天室其他端也同步退出聊天室功能,开启 15 分钟后生效。