WebSocketClient.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\common\workman;
  3. use Workerman\Connection\AsyncTcpConnection;
  4. use Workerman\Worker;
  5. /**
  6. * websocket客户端
  7. * Class WebSocketClient
  8. * @package app\common\workman
  9. */
  10. class WebSocketClient
  11. {
  12. protected $worker;//websocket实例
  13. /**
  14. * 构造方法
  15. * WebSocketServer constructor.
  16. */
  17. public function __construct()
  18. {
  19. }
  20. /**
  21. * 启动
  22. */
  23. public function start(){
  24. $this->worker = new Worker();
  25. $this->run();
  26. }
  27. /**
  28. * 业务方法,业务写在这里
  29. */
  30. private function run(){
  31. $this->worker->onWorkerStart = function ($worker) {
  32. $host = "ws://127.0.0.1:23456";//定义协议和端口,后续可以放到配置中
  33. $con = new AsyncTcpConnection($host);
  34. $con->onConnect = function($con) {
  35. $tlv=new Tlv();
  36. $tag = 0x01;
  37. $value = 'Hello i am client';
  38. $length = strlen( $value );
  39. $data = array(
  40. array($tag, $length,$value),
  41. array($tag, $length,$value)
  42. );
  43. //组包
  44. $data = $tlv->Write($data);
  45. $con->send($data);
  46. };
  47. $con->onMessage = function($con, $data) {
  48. echo $data;
  49. //$con->send('hello,i am client');
  50. };
  51. $con->connect();
  52. };
  53. Worker::runAll();
  54. }
  55. }