当前位置:   article > 正文

【ThinkPHP5初体验(一)4】使用workerman_thinkphp5 workerman

thinkphp5 workerman

 workermangithub很star的开源项目,所以我们不重复造轮子,如果是想理解理解一下怎么实现的原理点这里,当然这个只是给我们理解一下(不要在意它全是bug,退出socket时会一直报错,Crtl+C结束他吧

因为官方推荐将workerman引擎与thinkPHP分离,但我了解了一下scoket机制,发觉不分离以我现在的水平根本无法实现(我也找了很久,也没发现有人能实现的),业务逻辑全放在app上,而workerman只提供一个平台给我们传输数据。(workerman框架不只是这些,走一波手册)

workerman手册:http://doc.workerman.net/

GatewayWorker手册:http://doc2.workerman.net/

所以综上所述,我们需要另外打开一个cmd去运行workerman框架。

一、入口文件

文件目录:/         新建文件:server.php   (随便你写那里只要注意路径就可以了,我就写在根目录/)

  1. <?php
  2. define('APP_PATH', __DIR__ . '/application/');
  3. define('BIND_MODULE','push/Worker');
  4. // 加载框架引导文件
  5. require __DIR__ . '/thinkphp/start.php';

二、业务逻辑 

文件目录:/application/push/controller 新建文件:Worker.php

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

直接运行cmd运行入口文件

php server.php

成功 

如果失败的请按我前几个博文重做

三、客户端视图层 

随便在那里新建一个html,因为socket可以跨域,连开服务器都可以省去,也就是说可以直接双击打开文件,不信你可以试试, 我前端出身(虽然现在无业游民)不会骗你

  1. <div><input type="text" id="setText"></div>
  2. <div><button id= "sendMsg">提交</button></div>
  3. <div>接受到信息:<span id="getText"></span></div>
  4. <script>
  5. var ws = new WebSocket('ws://127.0.0.1:1234');
  6. ws.onopen = function () {
  7. console.log('连接成功')
  8. }
  9. ws.onmessage = function (e) {
  10. getText.innerHTML = e.data
  11. }
  12. ws.onclose = function () {
  13. console.log('关闭')
  14. }
  15. sendMsg.onclick=function () {
  16. ws.send(setText.value)
  17. }
  18. </script>

只要有恒心铁柱磨成针。加油

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/309437
推荐阅读
相关标签
  

闽ICP备14008679号