赞
踩
workerman是github很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 (随便你写那里只要注意路径就可以了,我就写在根目录/)
- <?php
- define('APP_PATH', __DIR__ . '/application/');
- define('BIND_MODULE','push/Worker');
- // 加载框架引导文件
- require __DIR__ . '/thinkphp/start.php';
文件目录:/application/push/controller 新建文件:Worker.php
- <?php
- namespace app\push\controller;
- header("Content-Type:text/html;charset=utf-8");
-
- use think\worker\Server;
- class Worker extends Server
- {
- protected $socket = 'websocket://127.0.0.1:1234';
- /**
- Workerman
- * 收到信息
- * @param $connection
- * @param $data
- */
- public function onMessage($connection, $data)
- {
- $connection->send('我收到你的信息了'.$data);
- }
- /**
- * 当连接建立时触发的回调函数
- * @param $connection
- */
- public function onConnect($connection)
- {
-
- }
- /**
- * 当连接断开时触发的回调函数
- * @param $connection
- */
- public function onClose($connection)
- {
-
- }
- /**
- * 当客户端的连接上发生错误时触发
- * @param $connection
- * @param $code
- * @param $msg
- */
- public function onError($connection, $code, $msg)
- {
- echo "error $code $msg\n";
- }
- /**
- * 每个进程启动
- * @param $worker
- */
- public function onWorkerStart($worker)
- {
-
- }
- }

直接运行cmd运行入口文件
php server.php
成功
如果失败的请按我前几个博文重做
随便在那里新建一个html,因为socket可以跨域,连开服务器都可以省去,也就是说可以直接双击打开文件,不信你可以试试, 我前端出身(虽然现在无业游民)不会骗你
- <div><input type="text" id="setText"></div>
- <div><button id= "sendMsg">提交</button></div>
- <div>接受到信息:<span id="getText"></span></div>
- <script>
- var ws = new WebSocket('ws://127.0.0.1:1234');
- ws.onopen = function () {
- console.log('连接成功')
- }
- ws.onmessage = function (e) {
- getText.innerHTML = e.data
- }
- ws.onclose = function () {
- console.log('关闭')
- }
- sendMsg.onclick=function () {
- ws.send(setText.value)
- }
- </script>

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。