融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天
随着技术的发展;现代的网站;越来越趋于应用形式了;
不再是像以前那样需要用户刷新页面;获取数据了;
服务器端可以主动向用户推送数据;更加及时性了;
比较突出的就是即时通讯在线聊天;
今个;我们要打造的就是类似于网页版微信的功能;
一:注册融云账号
如果我们不是以即时通讯为主营业务;那么建议使用第三方的服务;这里以融云为例;
注册融云;创建应用;获得App Key和App Secret;
二:设置配置项
/Application/Common/Conf/config.php
'RONG_IS_DEV' => true,//是否是在开发中
'RONG_DEV_APP_KEY' => '8luwapkvu3xwl', //融云开发环境下的key 仅供测试使用 'RONG_DEV_APP_SECRET' => '1Aw1D7F6Td25', //融云开发环境下的SECRET 仅供测试使用 'RONG_PRO_APP_KEY' => '', //融云生产环境下的key
'RONG_PRO_APP_SECRET' => '', //融云生产环境下的SECRET
将key和sercet替换为自己应用;
三:集成php部分sdk
引入融云sdk:/ThinkPHP/Library/Org/Xb/RongCloud.class.php
公共函数:/Application/Common/Common/function.php
/**
* 根据配置项获取对应的key和secret
* @return array key和secret
*
*/
function get_rong_key_secret(){
//判断是需要开发环境还是生产环境的key
if (C('RONG_IS_DEV')) {
$key=C('RONG_DEV_APP_KEY');
$secret=C('RONG_DEV_APP_SECRET');
}else{
$key=C('RONG_PRO_APP_KEY');
$secret=C('RONG_PRO_APP_SECRET');
}
$data=array('key'=>$key,'secret'=>$secret);
return $data;
}
/**
* 获取融云token
* @param integer $uid 用户id
* @return integer token
*/
function get_rongcloud_token($uid){
// 从数据库中获取token
$token=D('OauthUser')->getToken($uid,1); // 如果有token就返回
if ($token) {
return $token;
}
// 获取用户昵称和头像
$user_data=M('Users')->field('username,avatar')->getById($uid);
// 用户不存在
if (empty($user_data)) {
return false;
}
// 获取头像url格式
$avatar=get_url($user_data['avatar']);
// 获取key和secret
$key_secret=get_rong_key_secret();
// 实例化融云
$rong_cloud=new \Org\Xb\RongCloud($key_secret['key'],$key_secret['secret']);
// 获取token
$token_json=$rong_cloud->getToken($uid,$user_data['username'],$avatar);
$token_array=json_decode($token_json,true);
// 获取token失败
if ($token_array['code']!=200) {
return false;
}
$token=$token_array['token'];
$data=array(
'uid'=>$uid,
'type'=>1,
'nickname'=>$user_data['username'],
'head_img'=>$avatar,
'access_token'=>$token
);
// 插入数据库
$result=D('OauthUser')->addData($data);
if ($result) {
return $token;
}else{
return false;
}
}
/**
* 更新融云头像
* @param integer $uid 用户id
* @return boolear 操作是否成功
*/
function refresh_rongcloud_token($uid){
// 获取用户昵称和头像
$user_data=M('Users')->field('username,avatar')->getById($uid);
// 用户不存在
if (empty($user_data)) {
return false;
}
$avatar=get_url($user_data['avatar']);
// 获取key和secret
$key_secret=get_rong_key_secret();
// 实例化融云
$rong_cloud=new \Org\Xb\RongCloud($key_secret['key'],$key_secret['secret']);
// 更新融云用户头像
$result_json=$rong_cloud->userRefresh($uid,$user_data['username'],$avatar);
$result_array=json_decode($result_json,true);
if ($result_array['code']==200) {
return true;
}else{
return false;
}
}
写一个控制器用来获取token、好友列表的头像和用户名:/Application/Api/Controller/RongController.class.php
/**
* 获取token
*/
public function get_token(){
// 获取用户id
$uid=get_uid();
// 获取token
$token=get_rongcloud_token($uid);
$data=array(
'token'=>$token
);
ajax_return($data,'获取成功',0);
}
/**
* 传递一个、或者多个用户id
* 获取用户头像用户名;用来组合成好友列表
*/
public function get_user_info(){
$uids=I('post.uids');
// 组合where数组条件
$map=array(
'id'=>array('in',$uids)
);
$data=M('Users')->field('id,username,avatar')->where($map)->select();
ajax_return($data,'获取用户数据成功',0);
}
四:集成前端部分
html要引入融云js的sdk;
然后下面是我痛苦的研究了融云的sdk后简化了的使用方法;
/Public/statics/rongcloud/js/main.js
然后配置html即可;
/tpl/Home/Index/user1.html
/tpl/Home/Index/user2.html
最终的效果是这样的:
当然;样式可以自己改;
测试项目示例的时候;切记使用两个不同的浏览器分别打开代表两个用户的链接;
用来模拟是两个用户在聊天;
融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天相关推荐
- thinkphp整合系列之融云即时通讯在线聊天
随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...
- 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍
高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI 全端覆盖!苹果手机端.安卓手机端.网页版.电脑PC版.无论哪个平台,都能畅通无阻! 性价比高!功能全面而价格低廉! ...
- 即时通讯在线聊天APP开发解决方案
即时通讯是目前移动端最为流行的通讯方式,各种各样的即时通讯软件也层出不穷:服务提供商也提供了越来越丰富的通讯服务功能,打造一个实时通信系统,允许两人或多人使用网络实时的传递文字消息.文件.语音与视频交 ...
- 【云原生之Docker实战】使用Docker部署Fiora在线聊天室平台
[云原生之Docker实战]使用Docker部署Fiora在线聊天室平台 一.Fiora介绍 1.Fiora简介 2.Fiora功能 二.检查宿主机系统版本 三.检查本地docker环境 1.检查do ...
- 【云原生之Docker实战】使用Docker部署Web在线聊天室Rocket.Chat
[云原生之Docker实战]使用Docker部署Web在线聊天室Rocket.Chat 一.Rocket.Chat介绍 二.检查本地系统环境 1.检查系统版本 2.检查docker版本 3.检查doc ...
- 即时通讯im聊天仿v信聊呗闲聊潮信该有的功能都有ios安卓web端
即时通讯im聊天仿v信聊呗闲聊潮信该有的功能都有ios安卓web端 App特色说明 经过测试.好用的,无BUG. 这个直接就可以运营了.聊天通信流畅. 推荐服务器配置:4核4G带宽5M 网盘下载地址: ...
- 整合营销系统推荐乐云seo_珠海整合营销【乐云seo】
珠海整合营销[乐云seo]就国内主机.主机和美国主机而言,我还是觉得主机空间是的选择.以前很多博主钟爱美国主机空间而不看好主机空间是因为主机虽然速度快,但是价格贵,而且系不如美国主机.不过现在主机空间 ...
- 整合营销系统推荐乐云seo_重庆整合营销【乐云seo】
重庆整合营销[乐云seo]拓宽的寻找渠道.如果各位老是在一个平台找,找来找去就那么些,时间长了之间的相似度自然就会变高.这里为大家举几个例子搜狗平台,这里有比较多的,可以拿来伪.站.站,就能得到比较多 ...
- 整合营销系统推荐乐云seo_广州整合营销【乐云seo】十年
广州整合营销[乐云seo]十年如果潜在站,就能很好建立起潜在客户对的信誉度.能够拓站建设时都希望能够通过宣传来达到效益的转换.站,还是用的宣传方式来宣传你的,那么肯定会丢失很大一部分的客户,所以想打破 ...
最新文章
- Mysql无法选取非聚合列
- 我在兰亭这三年之部门动荡
- Hadoop Shell命令
- Confluence 6 访问你的宏正文(body)
- Python常见文件函数
- JavaSE-22 反射
- OpenCV 网络视频传输 C++ 和 python实现
- Confluence 附件(Attachments)宏
- 投票系统程序设计缺陷分析
- 机器人动力学与控制_快速搭建“机器人动力学-参数辨识-轨迹规划-运动控制”的完整框架...
- Qt界面程序嵌入另一个Qt界面程序[Linux]
- UltraEdit注册机
- 基于Android的城市环境监测系统
- 腾讯云学生服务器购买教程(图文)
- 禁用win10触摸屏手势_禁用和启用Win10平板边缘滑动手势的详细方法
- mysql日期查询索引_mysql – 如何为这种查询索引两个日期列
- 致远项目管理SPM系统案例:中天金融集团股份有限公司项目管理
- 不拆微动,一招解决鼠标双击问题
- HTML5+CSS3小实例:发光文字悬停特效
- 有数列:9,99,999,9999...,编程计算前10项的值。
热门文章
- 给程序员的忠告:九种不值得你追随的老板
- 编程语言五花八门,哪种可以让程序员赚到更多钱?
- HTML5 API详解(7):link prefetch提升加载速度,优化体验
- php更多式样,php_1
- java jdk 的环境变量_Java JDK14(Java 14)在Windows上安装与环境变量配置
- java重定向url有参数吗_JavaScript重定向URL参数的两种方法小结
- excel插入行 uipath_Uipath中excel的activities用法介绍
- 别人的电子书,你的电子书,都在bookdown
- 废弃P-value,还是学学如何评估统计检验结果?
- 提高篇 第三部分 图论 第4章 差分约束系统