当前位置:首页 > PHP教程 > php应用 > 列表

使用swoole扩展php websocket示例

发布:smiling 来源: PHP粉丝网  添加日期:2020-09-09 15:41:38 浏览: 评论:0 

WebSocket规范的目标是在浏览器中实现和服务器端双向通信。双向通信可以拓展浏览器上的应用类型,如果你想要用PHP来写websocket应用,那swoole_framework一定是最好的选择,需要的朋友可以参考下,代码如下:

  1. <?php 
  2. define('DEBUG''on'); 
  3. define("WEBPATH"str_replace("\\","/", __DIR__)); 
  4. require __DIR__ . '/../libs/lib_config.php'
  5.  
  6. class WebSocket extends Swoole\Network\Protocol\WebSocket 
  7.     /** 
  8.      * 下线时,通知所有人 
  9.      */ 
  10.     function onClose($serv$client_id$from_id
  11.     { 
  12.         //将下线消息发送给所有人 
  13.         //$this->log("onOffline: " . $client_id); 
  14.         //$this->broadcast($client_id, "onOffline: " . $client_id); 
  15.         parent::onClose($serv$client_id$from_id); 
  16.     } 
  17.  
  18.     /** 
  19.      * 接收到消息时 
  20.      * @see WSProtocol::onMessage() 
  21.      */ 
  22.     function onMessage($client_id$ws
  23.     { 
  24.         $this->log("onMessage: ".$client_id.' = '.$ws['message']); 
  25.         $this->send($client_id"Server: ".$ws['message']); 
  26.   //$this->broadcast($client_id, $ws['message']); 
  27.     } 
  28.  
  29.     function broadcast($client_id$msg
  30.     { 
  31.         foreach ($this->connections as $clid => $info
  32.         { 
  33.             if ($client_id != $clid
  34.             { 
  35.                 $this->send($clid$msg); 
  36.             } 
  37.         } 
  38.     } 
  39.  
  40. //phpfensi.com 
  41. $AppSvr = new WebSocket(); 
  42. $AppSvr->loadSetting(__DIR__."/swoole.ini"); //加载配置文件 
  43. $AppSvr->setLogger(new \Swoole\Log\EchoLog(true)); //Logger 
  44.  
  45. $server = new \Swoole\Network\Server('0.0.0.0', 9503); 
  46. $server->setProtocol($AppSvr); 
  47. //$server->daemonize(); //作为守护进程 
  48. $server->run(array('worker_num' =>4)); 

Tags: swoole websocket

分享到: