日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2025/3/15 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 融云聊天 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整合系列之融云即时通讯在线聊天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。