随着技术的发展;现代的网站;越来越趋于应用形式了;
不再是像以前那样需要用户刷新页面;获取数据了;
服务器端可以主动向用户推送数据;更加及时性了;
比较突出的就是即时通讯在线聊天;
今个;我们要打造的就是类似于网页版微信的功能;
示例项目:https://github.com/baijunyao/thinkphp-bjyadmin
一:注册融云账号
如果我们不是以即时通讯为主营业务;那么建议使用第三方的服务;这里以融云为例;
官网:http://www.rongcloud.cn
注册融云;创建应用;获得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
PHP
Copy

将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(){// 判断是需要开发环境还是生产环境的keyif (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;}
}
PHP
Copy

写一个控制器用来获取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);}
PHP
Copy

四:集成前端部分
html要引入融云js的sdk;

<script src="http://cdn.ronghub.com/RongIMLib-2.0.6.beta.min.js"></script>
<script src="http://cdn.ronghub.com/RongEmoji-2.0.2.beta.min.js"></script>
HTML
Copy

然后下面是我痛苦的研究了融云的sdk后简化了的使用方法;
/Public/statics/rongcloud/js/main.js
然后配置html即可;
/tpl/Home/Index/user1.html
/tpl/Home/Index/user2.html
最终的效果是这样的:

当然;样式可以自己改;
测试项目示例的时候;切记使用两个不同的浏览器分别打开代表两个用户的链接;

用来模拟是两个用户在聊天;

转载自:http://baijunyao.com

thinkphp整合系列之融云即时通讯在线聊天相关推荐

  1. 融云聊天 php_thinkphp整合系列之融云即时通讯在线聊天

    随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的 ...

  2. 融云即时通讯SDK集成 – 定制UI(二) ——添加自定义表情库

    融云即时通讯SDK集成 – 定制UI(二) --添加自定义表情库 背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的 ...

  3. 融云即时通讯云平台获北京六局委新技术新产品认证

    近日,融云即时通讯云平台成功入选第七批北京市新技术新产品(服务)认证,成为本批次中即时通讯行业唯一入选企业.该证书是由北京市科学技术委员会.北京市发展改革委员会.北京市经济和信息化委员会.北京市住房和 ...

  4. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  5. 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍

    高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI 全端覆盖!苹果手机端.安卓手机端.网页版.电脑PC版.无论哪个平台,都能畅通无阻! 性价比高!功能全面而价格低廉! ...

  6. 融云即时通讯云5大高级功能解决App运营诸多痛点

    在移动互联网时代,涉及各类民生的App应用已经彻底改变了人们的生活方式.据工信部日前发布的<2017年上半年我国互联网业务运行情况报告>显示,我国移动应用程序,即App的数量已超402万款 ...

  7. iOS:融云即时通讯快速集成

    一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...

  8. 融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

    背景: 最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选 ...

  9. 对接融云即时通讯组件SDK,轻松实现App聊天室

    我好像特别喜欢做聊天室类的东东,刚折腾完微软的SignalR又折腾App.本来想研究研究XMPP的,由于服务器的搭建问题,先采用一个第三方的吧,看看效果如何.听到弟弟说他们公司用到了融云,我也下载个S ...

最新文章

  1. 让你的 conda “回滚”到以前版本的环境
  2. codeforces 293E Close Vertices 点分治+滑窗+treap
  3. jQuery源码dom ready分析
  4. 大多数日志文件的后缀名是_编程小短文:find,让你随心所欲查找整块磁盘的任意文件...
  5. 2018.08.09洛谷P3959 宝藏(随机化贪心)
  6. IBM DS300 安装
  7. 在php中图片放大怎么实现,用PHP实现图片的缩放与裁剪
  8. linux增量安装tomcat_Linux服务器上的tomcat中部署web项目
  9. 合肥python招聘_2020年合肥京东方招聘官网招聘-合肥京东方招聘官网招聘求职信息-拉勾招聘...
  10. java正则匹配下划线_java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?...
  11. java get请求带参数报错 java.io.IOException: Server returned HTTP response code: 400 for URL
  12. 运维--域服务器--搭建
  13. android studio 圆形头像,Android Studio实现带边框的圆形头像
  14. 2022年二级建造师建设工程法规及相关知识考试每日一练及答案
  15. Guitar Pro8.0吉他打谱作曲中文版有哪些新功能?
  16. 基于循环神经网络的格兰杰因果网络重构
  17. celery 停止任务_celery 停止执行中 task
  18. android微信第三方登陆混淆,Android 第三方应用接入微信平台研究情况分享(二)
  19. 求二叉树的深度 题目编号:376
  20. 配置文档的访问权限 配置LDAP家目录漫游

热门文章

  1. 刻录镜像光盘(为rhel7.2)
  2. unicode编码详解_转载
  3. 分布式概念扫盲(Byzantine generals problem/CAP/TPC/TCC)
  4. 计算机无法为u盘保存所有数据,U盘插电脑后设置成只能读不能写状态
  5. 怎样成为快速阅读的高手(中)
  6. matlab课程的评价反馈,对老师授课能力的评语
  7. 株洲科能冲刺上市:计划募资约6亿元,实控人为赵科峰、唐燕夫妇
  8. 制作Windows U盘启动盘---微软官方提供(最容易上手的方式)
  9. solidwork软件安装显示失败问题处理
  10. 11 【Teleport CSS功能】