Events.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * This file is part of workerman.
  4. *
  5. * Licensed under The MIT License
  6. * For full copyright and license information, please see the MIT-LICENSE.txt
  7. * Redistributions of files must retain the above copyright notice.
  8. *
  9. * @author walkor<walkor@workerman.net>
  10. * @copyright walkor<walkor@workerman.net>
  11. * @link http://www.workerman.net/
  12. * @license http://www.opensource.org/licenses/mit-license.php MIT License
  13. */
  14. /**
  15. * 用于检测业务代码死循环或者长时间阻塞等问题
  16. * 如果发现业务卡死,可以将下面declare打开(去掉//注释),并执行php start.php reload
  17. * 然后观察一段时间workerman.log看是否有process_timeout异常
  18. */
  19. //declare(ticks=1);
  20. use \GatewayWorker\Lib\Gateway;
  21. /**
  22. * 主逻辑
  23. * 主要是处理 onConnect onMessage onClose 三个方法
  24. * onConnect 和 onClose 如果不需要可以不用实现并删除
  25. */
  26. class Events
  27. {
  28. /**
  29. * 当客户端连接时触发
  30. * 如果业务不需此回调可以删除onConnect
  31. *
  32. * @param int $client_id 连接id
  33. */
  34. public static function onConnect($client_id)
  35. {
  36. /*
  37. // 向当前client_id发送数据
  38. Gateway::sendToClient($client_id, "Hello $client_id\r\n");
  39. // 向所有人发送
  40. Gateway::sendToAll("$client_id login\r\n");
  41. */
  42. Gateway::sendToClient($client_id, json_encode(array(
  43. 'type' => 'init',
  44. 'client_id' => $client_id
  45. )));
  46. }
  47. /**
  48. * 当客户端发来消息时触发
  49. * @param int $client_id 连接id
  50. * @param mixed $message 具体消息
  51. */
  52. public static function onMessage($client_id, $message)
  53. {
  54. // 向所有人发送
  55. //Gateway::sendToAll("$client_id said $message\r\n");
  56. }
  57. /**
  58. * 当用户断开连接时触发
  59. * @param int $client_id 连接id
  60. */
  61. public static function onClose($client_id)
  62. {
  63. // 向所有人发送
  64. //GateWay::sendToAll("$client_id logout\r\n");
  65. }
  66. }