首先通过 composer 安装

    如果需要在window下做服务端,还需要

      新增启动服务文件server.php,在项目根目录

      新增服务处理类,push.app是我本地测试域名

      1. <?php
      2. namespace app\push\controller;
      3. use think\worker\Server;
      4. class Worker extends Server
      5. {
      6. protected $socket = 'websocket://push.app:2346';
      7. /**
      8. * 收到信息
      9. * @param $connection
      10. * @param $data
      11. */
      12. public function onMessage($connection, $data)
      13. {
      14. $connection->send('我收到你的信息了');
      15. }
      16. /**
      17. * 当连接建立时触发的回调函数
      18. */
      19. public function onConnect($connection)
      20. {
      21. }
      22. /**
      23. * 当连接断开时触发的回调函数
      24. * @param $connection
      25. */
      26. public function onClose($connection)
      27. {
      28. }
      29. /**
      30. * 当客户端的连接上发生错误时触发
      31. * @param $connection
      32. * @param $code
      33. * @param $msg
      34. */
      35. public function onError($connection, $code, $msg)
      36. echo "error $code $msg\n";
      37. }
      38. /**
      39. * 每个进程启动
      40. * @param $worker
      41. */
      42. public function onWorkerStart($worker)
      43. {
      44. }
      45. }

      打开chrome浏览器,先打开push.app域名下的网页(js跨域不能通讯),按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)

      1. ws = new WebSocket("ws://push.app:2346");
      2. ws.onopen = function() {
      3. alert("连接成功");
      4. ws.send('tom');
      5. alert("给服务端发送一个字符串:tom");
      6. };
      7. ws.onmessage = function(e) {
      8. alert("收到服务端的消息:" + e.data);
      9. };

      继续测试