安装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 官方文档