真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么利用workerman實現(xiàn)即時聊天功能

這篇文章主要介紹怎么利用workerman實現(xiàn)即時聊天功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司公司2013年成立,先為山陰等服務(wù)建站,山陰等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為山陰企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

下載服務(wù)器端安裝文件:

怎么利用workerman實現(xiàn)即時聊天功能

有windows版和linux版兩個版本,我下載的linux版,在windows上也可以運行。

打開后有這些文件:

怎么利用workerman實現(xiàn)即時聊天功能

把這個文件放在服務(wù)器上或者項目中都可以,需要運行的就是最后一個start_for_win.bat文件。

怎么利用workerman實現(xiàn)即時聊天功能

運行成功。

修改start_gateway.php文件:


 * @copyright walkor
 * @link http://www.workerman.net/
 * @license http://www.opensource.org/licenses/mit-license.php MIT License
 */
use \Workerman\Worker;
use \Workerman\WebServer;
use \GatewayWorker\Gateway;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader;

// 自動加載類
require_once __DIR__ . '/../../vendor/autoload.php';

// gateway 進程,這里使用Text協(xié)議,可以用telnet測試
$gateway = new Gateway("websocket://0.0.0.0:8282");
// gateway名稱,status方便查看
$gateway->name = 'YourAppGateway';
// gateway進程數(shù)
$gateway->count = 4;
// 本機ip,分布式部署時使用內(nèi)網(wǎng)ip
$gateway->lanIp = '127.0.0.1';
// 內(nèi)部通訊起始端口,假如$gateway->count=4,起始端口為4000
// 則一般會使用4000 4001 4002 4003 4個端口作為內(nèi)部通訊端口
$gateway->startPort = 2900;
// 服務(wù)注冊地址
$gateway->registerAddress = '127.0.0.1:1238';

// 心跳間隔
$gateway->pingInterval = 60;
// 心跳數(shù)據(jù)
$gateway->pingData = '{"type":"ping"}';

/*
// 當(dāng)客戶端連接上來時,設(shè)置連接的onWebSocketConnect,即在websocket握手時的回調(diào)
$gateway->onConnect = function($connection)
{
    $connection->onWebSocketConnect = function($connection , $http_header)
    {
        // 可以在這里判斷連接來源是否合法,不合法就關(guān)掉連接
        // $_SERVER['HTTP_ORIGIN']標(biāo)識來自哪個站點的頁面發(fā)起的websocket鏈接
        if($_SERVER['HTTP_ORIGIN'] != 'http://kedou.workerman.net')
        {
            $connection->close();
        }
        // onWebSocketConnect 里面$_GET $_SERVER是可用的
        // var_dump($_GET, $_SERVER);
    };
};
*/

// 如果不是在根目錄啟動,則運行runAll方法
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}

第24行,把tcp協(xié)議改為websocket協(xié)議;

第38行和40行,設(shè)置服務(wù)器向客戶端發(fā)送的心跳時間,檢測客戶端是否連接,未連接將會斷開。

下面的內(nèi)容都是默認(rèn)注釋掉的,根據(jù)自己的需要打開或者修改。

再次運行start_for_win.bat文件:

怎么利用workerman實現(xiàn)即時聊天功能

協(xié)議就變?yōu)閣ebsocket協(xié)議了,現(xiàn)在就可以做項目內(nèi)的操作了。

還需要再下載一個文件:https://github.com/walkor/GatewayClient

怎么利用workerman實現(xiàn)即時聊天功能

把這幾個文件放進thinkphp的extend文件夾下(我用的是thinkphp5.0版本):

怎么利用workerman實現(xiàn)即時聊天功能

在Gateway.php的文件中方法幾乎都寫好了。

寫了一個簡單的前端頁面:

怎么利用workerman實現(xiàn)即時聊天功能



    
        
        
        
        
    
    
        
            
  • ws://127.0.0.1:8282
  •                           發(fā)送                      {volist name="msg" id="vo" empty="這里沒有數(shù)據(jù)" key ='s'}                     
                    {$vo.user_name}:                 {$vo.msg}                 {$vo.createtime}                     
                  {/volist}         
                          

    第42—52行把client_id傳到后臺,與用戶表中用戶進行綁定。

    后臺代碼:

    where($where)->select();
            foreach ($msg as $key=>$val){
                $msg[$key]['createtime']=date('Y-m-d H:i:s',$val['createtime']);
                $msg[$key]['user_name']=Db::name('user')->where(['id'=>$val['from_id']])->value('name');
            }
            $this->assign('msg',$msg);
            return view();
        }
    
        //綁定用戶
        public function user_bind($user_id=1){
            //$user_id=1; //發(fā)送人用戶id
            $client_id = input('post.client_id');
    //        $user=Db::name('user')->where(['id'=>$user_id])->find();
            Gateway::bindUid($client_id, 1);
            return $client_id;
        }
    
        //發(fā)送信息
        public function send_msg(){
            $msg=input('msg');
            if($msg){
                $data=[
                  'msg'=>$msg,
                  'from_id'=>1,
                  'to_id'=>2,
                  'createtime'=>time()
                ];
                Db::name('msg')->insert($data);
                Gateway::sendToUid(1,$msg);
                Gateway::sendToUid(2,$msg);
            }
            return 'success';
        }
    
    }

    發(fā)送消息存入數(shù)據(jù)庫,頁面顯示即可。

    怎么利用workerman實現(xiàn)即時聊天功能

    以上是“怎么利用workerman實現(xiàn)即時聊天功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


    本文標(biāo)題:怎么利用workerman實現(xiàn)即時聊天功能
    標(biāo)題網(wǎng)址:http://weahome.cn/article/pggcco.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部