web 直播&即时聊天------阿里云、融云
随着直播越来越火,所在公司也打算制作自己的直播,所以去了解了这方面,使用后发现还是有些问题需要记录的。
经过分析,制作直播应该是分为两块来做,即直播与实时评论。这里先去制作实时评论,等直播ok后,也会将相应心得写上来。
其实融云的api还是比较清晰的,只不过web demo只有ng的,个人对ng不是很熟悉,所以只能自己慢慢摸索。
1. 注册帐号,根据提示创建应用,获取appkey
2. 引入sdk(请去官网选择最新版本)
<script src="http(s)://cdn.ronghub.com/RongIMLib-2.2.5.min.js"></script>
3. 初始化sdk
RongIMClient.init("xxx"); //"xxx"代表你的appkey
4. 设置监听器
// 设置连接监听状态 ( status 标识当前连接状态) // 连接状态监听器 RongIMClient.setConnectionStatusListener({ onChanged: function (status) { switch (status) { //链接成功 case RongIMLib.ConnectionStatus.CONNECTED: console.log('链接成功'); break; //正在链接 case RongIMLib.ConnectionStatus.CONNECTING: console.log('正在链接'); break; //重新链接 case RongIMLib.ConnectionStatus.DISCONNECTED: console.log('断开连接'); break; //其他设备登录 case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT: console.log('其他设备登录'); break; //网络不可用 case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE: console.log('网络不可用'); break; } }}); // 消息监听器 RongIMClient.setOnReceiveMessageListener({ // 接收到的消息 onReceived: function (message) { // 判断消息类型 switch(message.messageType){ case RongIMClient.MessageType.TextMessage: // 发送的消息内容将会被打印 console.log(message.content.content); break; case RongIMClient.MessageType.VoiceMessage: // 对声音进行预加载 // message.content.content 格式为 AMR 格式的 base64 码 RongIMLib.RongIMVoice.preLoaded(message.content.content); break; case RongIMClient.MessageType.ImageMessage: // do something... break; case RongIMClient.MessageType.DiscussionNotificationMessage: // do something... break; case RongIMClient.MessageType.LocationMessage: // do something... break; case RongIMClient.MessageType.RichContentMessage: // do something... break; case RongIMClient.MessageType.DiscussionNotificationMessage: // do something... break; case RongIMClient.MessageType.InformationNotificationMessage: // do something... break; case RongIMClient.MessageType.ContactNotificationMessage: // do something... break; case RongIMClient.MessageType.ProfileNotificationMessage: // do something... break; case RongIMClient.MessageType.CommandNotificationMessage: // do something... break; case RongIMClient.MessageType.CommandMessage: // do something... break; case RongIMClient.MessageType.UnknownMessage: // do something... break; default: // 自定义消息 // do something... } } });
顾名思义,状态连接监听器是用来检测当前用户的状态的,消息监听器也就是我们接受消息的。
5. 获取token(在我的应用中自行获取即可)
6. 连接服务器
var token = "xxx"; //"xxx"代表你自己的token // 连接融云服务器。 RongIMClient.connect(token, { onSuccess: function(userId) { console.log("Login successfully." + userId); }, onTokenIncorrect: function() { console.log('token无效'); }, onError:function(errorCode){ var info = ''; switch (errorCode) { case RongIMLib.ErrorCode.TIMEOUT: info = '超时'; break; case RongIMLib.ErrorCode.UNKNOWN_ERROR: info = '未知错误'; break; case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION: info = '不可接受的协议版本'; break; case RongIMLib.ErrorCode.IDENTIFIER_REJECTED: info = 'appkey不正确'; break; case RongIMLib.ErrorCode.SERVER_UNAVAILABLE: info = '服务器不可用'; break; } console.log(errorCode); } });
7. 发送消息
// 定义消息类型,文字消息使用 RongIMLib.TextMessage var msg = new RongIMLib.TextMessage({content:"hello",extra:"附加信息"}); //或者使用RongIMLib.TextMessage.obtain 方法.具体使用请参见文档 //var msg = RongIMLib.TextMessage.obtain("hello"); var conversationtype = RongIMLib.ConversationType.CHATROOM; // 聊天室 var targetId = "xxx"; // 目标 Id RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, { // 发送消息成功 onSuccess: function (message) { //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳 console.log("Send successfully"); }, onError: function (errorCode,message) { var info = ''; switch (errorCode) { case RongIMLib.ErrorCode.TIMEOUT: info = '超时'; break; case RongIMLib.ErrorCode.UNKNOWN_ERROR: info = '未知错误'; break; case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST: info = '在黑名单中,无法向对方发送消息'; break; case RongIMLib.ErrorCode.NOT_IN_DISCUSSION: info = '不在讨论组中'; break; case RongIMLib.ErrorCode.NOT_IN_GROUP: info = '不在群组中'; break; case RongIMLib.ErrorCode.NOT_IN_CHATROOM: info = '不在聊天室中'; break; default : info = x; break; } console.log('发送失败:' + info); } } );
因为是直播所以选择了聊天室,大家根据自己的需求更改即可
RongIMLib.ConversationType.CHATROOM; ==> 选择聊天室
targetId = "xxx"; ==> 如果是聊天室就填写创建聊天室的id,私聊就是目标用户的id,以此类推
8. 进入聊天室
var chatRoomId = "xxx"; // 聊天室 Id。
var count = 1;// 拉取最近聊天最多 50 条
RongIMClient.getInstance().joinChatRoom(chatRoomId, count, { onSuccess: function() { // 加入聊天室成功。 console.log('加入聊天室成功。'); }, onError: function(error) { // 加入聊天室失败 } });
当没有聊天室的时候,此方法会创建聊天室
9.其他
基本上的功能就是这样了,像其他的功能(同步回话列表,表情等)大家去官网查看,这里就不讲解了...
如若您发现有任何问题,欢迎交流指正...
http://www.cnblogs.com/bbbiu/p/6871994.html