PHP笔记-Workerman整合到Laravel中并创建websocket

文章介绍了如何在Laravel框架中结合Workerman来搭建WebSocket服务,讨论了不同场景下(如虚拟机、服务器和虚拟空间)的适用情况,并提供了创建控制台命令和配置Worker的示例代码。对于中大型项目,作者建议采用微服务架构进行分离。
摘要由CSDN通过智能技术生成

今天想把websocket搭建起来,查了下原始的Laravel并没有这个功能,发现php中websocket用workerman好像比较多。

在此将他们结合下,但结合时发现了一些问题。此篇博文虽然以及结合起来了,但是在某些情况下,建议还是分开,做成微服务的那种。

如果是使用虚拟机或服务器。业务简单的情况下可以结合起来,不影响。还可以共享很多资源。

如果使用的虚拟空间。就必须要分开了。因为虚拟空间只开了80或443端口,websocket需要另外开个端口,所以这种情况要分开。

如果是要搞中大型的项目,建议分开。

下面来看下整合,先加载库

composer require workerman/workerman

创建控制台命令:

php artisan make:command Workerman

此时会在app/Console/Commands下面新建一个Workerman.php

将代码改成:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Workerman\Worker;

class Workerman extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'workerman:websocket';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $wsWorker = new Worker('websocket://0.0.0.0:2346');

        $wsWorker->onConnect = function($connection){

            echo "New Connection\n";
        };

        $wsWorker->onMessage = function ($connection, $data){

            $connection->send('Hello' . $data);
        };

        $wsWorker->onClose = function ($connection){

            echo "Connection closed\n";
        };

        Worker::runAll();
    }
}

这里有几点要注意:

 这个$signature要填写,控制台启动workerman时就是

php artisan workerman:websocket

输入后:

 启动成功,用网页调试下:

服务端后台打印:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值