打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(一)

国庆放假在家充充电哈,

开始学习workerman,因为之前也一直想研究下socket通信,趁此机会把学到的分享给大家哈~~,话不多说直接上效果图:

打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(一)_第1张图片

 

打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(一)_第2张图片

效果图是用户10与20间的聊天截图,因为界面是自己随便做的,比较丑请大神见谅哈。。。。。。。

1,先到workerman官网下载GatewayWorker框架;

2、将下载好的解压放在tp5的vendor里面,GatewayWorker本身就是框架可与tp5独立运行,是互不干扰的

3、Tp5框架新建控制器方法index和视图index.html;

如下:

index.html代码视图: 




	
     
	Document
    



 

Index控制器index方法:

public function index()
{

$this->assign('fid',input('fid'));
$this->assign('tid',input('tid'));
return view();

}

4、找到gatewayWoker/Applications/YourApp的Events.php根据功能需求编写代码:

  public static function onConnect($client_id)
    {
        // 向当前client_id发送数据 
        //Gateway::sendToClient($client_id, "Hello $client_id\r\n");
        // 向所有人发送
        //Gateway::sendToAll("$client_id login\r\n");
        //
        Gateway::sendToClient($client_id, 
          json_encode(
            ["type"=>"init",
            "client_id"=>$client_id])
        );
    }
    
   /**
    * 当客户端发来消息时触发
    * @param int $client_id 连接id
    * @param mixed $message 具体消息
    */
   public static function onMessage($client_id, $message)
   {
      $message=json_decode($message,true);
       if(!$message)
       {
        return;
       }
        switch ($message['type']) {
          case "bind":
            Gateway::bindUid($client_id,$message['fid']);
            break;
          case "text":
          $date=[
            "type"=>"text",
            "fid"=>$message['fid'],
            "tid"=>$message['tid'],
            "data"=>nl2br(htmlspecialchars($message['data'])),
            "time"=>time()
          ];
             Gateway::sendToUid($message['tid'],json_encode($date));
            break;
          default:
          Gateway::sendToAll("21211");
            break;
        }
        // 向所有人发送
        //Gateway::sendToAll("$client_id say $message\r\n");
   }

5、运行,如果你是win系统直接,运行GatewayWorker下的start_for_win.bat即可,如果是linux则运行:php start.php start -d

至此大功告成,一个简单的在线及时交流客服功能,就此实现!

如果您还期待后期功能完善的话,请您关注下一期的《打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(二)》发布…………

你可能感兴趣的:(thinkphp,php,Javascript)