- 安装workman文档:http://doc.workerman.net/install/install.html (官方文档)
- 在(laravel框架)项目App\Console\Commands\Test下新建一个定时文件 如下:WorkermanCommand
- 代码如下:
-
/**websocket及时接受消息返回给前端 测试 * Class WorkermanCommand * @package App\Console\Commands\Test */ class WorkermanCommand extends Command { protected $signature = 'workman {action} {--d}'; protected $description = 'Start a Workerman server.'; public function handle() { global $argv; $action = $this->argument('action'); $argv[0] = 'wk'; $argv[1] = $action; $argv[2] = $this->option('d') ? '-d' : ''; $this->start(); } private function start() { // 注意:这里使用的是websocket协议 $ws_worker = new Worker("websocket://0.0.0.0:1234"); // 启动1个进程对外提供服务 $ws_worker->count = 1; // 当收到客户端发来的数据后返回hello $data给客户端 $ws_worker->onMessage = function ($connection, $data) { // 向客户端发送hello $data $connection->send('hello ' . $data); }; // 运行worker Worker::runAll(); } }
- 在测试服务器 shell执行 php artisan workman start 如图所示:表示已经开启成功开启
-
在测试
打开chrome浏览器,按F12打开调试控制台,在Console一栏输入(或者把下面代码放入到html页面用js运行)
// 假设服务端ip为40.88.10.1
ws = new WebSocket("ws://40.88.10.1:1234");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
得到结果如下:
-
要加timer定时器的 参考http://doc.workerman.net/timer/add.html 官方文档