百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Laravel11 Laravel-Reverb-超快且可扩展的实时 WebSocket 通信

off999 2025-03-19 01:02 57 浏览 0 评论

大家好呀,我是yangyang.今天带来Laravel11尝鲜的新一期,如果没有看过的朋友可以先看看laravel11的重要更新《laravel11发行说明》,然后今天的主要内容是介绍laravel11中广播系统的新驱动Laravel-Reverb.

介绍

Laravel Reverb直接为您的 Laravel 应用程序带来超快且可扩展的实时 WebSocket 通信,并提供与 Laravel 现有事件广播工具套件的无缝集成。

安装

您可以使用 Artisan 命令安装 Reverb install:broadcasting:

php artisan install:broadcasting       

配置

该命令将使用一组合理的默认配置选项安装 Reverb。如果您想进行任何配置更改,可以通过更新 Reverb 的环境变量或更新config/reverb.php配置文件来完成。


申请凭证

为了建立与 Reverb 的连接,必须在客户端和服务器之间交换一组 Reverb“应用程序”凭据。这些凭据在服务器上配置,用于验证来自客户端的请求。您可以使用以下环境变量定义这些凭据:

REVERB_APP_ID=my-app-id

REVERB_APP_KEY=my-app-key

REVERB_APP_SECRET=my-app-secret
            


允许的来源

您还可以通过更新配置文件部分allowed_origins中的配置值来定义客户端请求的来源。来自未在您允许的来源中列出的来源的任何请求都将被拒绝。您可以使用以下方式允许所有来源:appsconfig/reverb.php*

'apps' => [

 [

'id' => 'my-app-id',

'allowed_origins' => ['laravel.com'],

// ...

 ]

]
            


附加应用

通常,Reverb 为其安装的应用程序提供 WebSocket 服务器。然而,可以使用单个 Reverb 安装来服务多个应用程序。

例如,您可能希望维护一个 Laravel 应用程序,该应用程序通过 Reverb 为多个应用程序提供 WebSocket 连接。这可以通过apps在应用程序的config/reverb.php配置文件中定义多个来实现:

'apps' => [

 [

'id' => 'my-app-one',

// ...

 ],

 [

'id' => 'my-app-two',

// ...

 ],

],


            

SSL协议

在大多数情况下,安全的 WebSocket 连接在请求被代理到 Reverb 服务器之前由上游 Web 服务器(Nginx 等)处理。

但是,有时(例如在本地开发期间)Reverb 服务器直接处理安全连接可能很有用。如果您正在使用Laravel Herd 的安全站点功能,或者您正在使用Laravel Valet并针对您的应用程序运行了secure 命令,您可以使用为您的站点生成的 Herd / Valet 证书来保护您的 Reverb 连接。为此,请将REVERB_HOST环境变量设置为站点的主机名或在启动 Reverb 服务器时显式传递主机名选项:

php artisan reverb:start --host="0.0.0.0" --port=8080 --hostname="laravel.test"
            


由于 Herd 和 Valet 域解析为localhost,运行上面的命令将导致您的 Reverb 服务器可通过安全 WebSocket 协议 ( wss)进行访问wss://laravel.test:8080。

tls您还可以通过在应用程序的配置文件中定义选项来手动选择证书config/reverb.php。在选项数组中,您可以提供PHP 的 SSL 上下文选项tls支持的任何选项:

'options' => [

'tls' => [

'local_cert' => '/path/to/cert.pem'

 ],

],
            


运行服务器

可以使用reverb:startArtisan 命令启动混响服务器:

php artisan reverb:start
            


默认情况下,混响服务器将在 启动0.0.0.0:8080,从而可以从所有网络接口访问它。

如果您需要指定自定义主机或端口,您可以在启动服务器时通过--host和选项来执行此操作:--port

php artisan reverb:start --host=127.0.0.1 --port=9000
            


或者,您可以在应用程序的配置文件中定义环境REVERB_SERVER_HOST变量。REVERB_SERVER_PORT.env

调试

为了提高性能,Reverb 默认情况下不输出任何调试信息。如果您想查看通过混响服务器的数据流,您可以--debug向reverb:start命令提供选项:

php artisan reverb:start --debug
            


重启

由于 Reverb 是一个长期运行的进程,因此如果不通过reverb:restartArtisan 命令重新启动服务器,对代码的更改将不会得到反映。

该reverb:restart命令确保在停止服务器之前正常终止所有连接。如果您使用进程管理器(例如 Supervisor)运行 Reverb,则在所有连接终止后,进程管理器将自动重新启动服务器:

php artisan reverb:restart
            


监控

可以通过与Laravel Pulse集成来监控混响。通过启用 Reverb 的 Pulse 集成,您可以跟踪服务器正在处理的连接和消息的数量。

要启用集成,您应该首先确保已安装 Pulse。然后,将任何 Reverb 录音机添加到应用程序的config/pulse.php配置文件中:

use Laravel\Reverb\Pulse\Recorders\ReverbConnections;

use Laravel\Reverb\Pulse\Recorders\ReverbMessages;

'recorders' => [

ReverbConnections::class => [

'sample_rate' => 1,

 ],

ReverbMessages::class => [

'sample_rate' => 1,

 ],

...

],
            

接下来,将每个记录器添加到您的仪表板:







 ...


            


在生产中运行Reverb

由于 WebSocket 服务器的长期运行特性,您可能需要对服务器和托管环境进行一些优化,以确保您的 Reverb 服务器能够有效地处理服务器上可用资源的最佳连接数。

[!注意]如果您的站点由Laravel Forge
管理,您可以直接从“应用程序”面板自动优化服务器的 Reverb。通过启用 Reverb 集成,Forge 将确保您的服务器已做好生产准备,包括安装任何所需的扩展并增加允许的连接数量。

打开文件

每个 WebSocket 连接都保存在内存中,直到客户端或服务器断开连接。在 Unix 和类 Unix 环境中,每个连接都由一个文件表示。然而,在操作系统和应用程序级别上允许打开的文件数量通常受到限制。

操作系统

在基于 Unix 的操作系统上,您可以使用以下ulimit命令确定允许的打开文件数:

ulimit -n
            


该命令将显示不同用户允许的打开文件限制。您可以通过编辑/etc/security/limits.conf文件来更新这些值。例如,将用户的最大打开文件数更新为 10,000 个,forge如下所示:

# /etc/security/limits.conf

forge soft nofile 10000

forge hard nofile 10000
            


事件循环

在底层,Reverb 使用 ReactPHP 事件循环来管理服务器上的 WebSocket 连接。默认情况下,此事件循环由 提供支持stream_select,不需要任何额外的扩展。但是,stream_select通常限制为 1,024 个打开文件。因此,如果您计划处理超过 1,000 个并发连接,则需要使用不受相同限制的替代事件循环。

如果可用,混响将自动切换到ext-event、ext-ev或ext-uv有源循环。所有这些 PHP 扩展都可以通过 PECL 安装:

pecl install event

# or

pecl install ev

# or

pecl install uv
            


网络服务器

在大多数情况下,Reverb 在服务器上的非面向 Web 的端口上运行。因此,为了将流量路由到 Reverb,您应该配置反向代理。假设 Reverb 在主机0.0.0.0和端口上运行8080,并且您的服务器使用 Nginx Web 服务器,则可以使用以下 Nginx 站点配置为您的 Reverb 服务器定义反向代理:

server {

 ...

location / {

 proxy_http_version 1.1;

 proxy_set_header Host $http_host;

 proxy_set_header Scheme $scheme;

 proxy_set_header SERVER_PORT $server_port;

 proxy_set_header REMOTE_ADDR $remote_addr;

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 proxy_set_header Upgrade $http_upgrade;

 proxy_set_header Connection "Upgrade";

 proxy_pass http://0.0.0.0:8080;

 }

 ...

}
            


通常,Web 服务器配置为限制允许的连接数量,以防止服务器过载。要将 Nginx Web 服务器上允许的连接数增加到 10,000,应更新文件的worker_rlimit_nofile和值:
worker_connectionsnginx.conf

user forge;

worker_processes auto;

pid /run/nginx.pid;

include /etc/nginx/modules-enabled/*.conf;

worker_rlimit_nofile 10000;

events {

 worker_connections 10000;

 multi_accept on;

}
            


上面的配置将允许每个进程最多生成 10,000 个 Nginx 工作线程。此外,此配置将 Nginx 的打开文件限制设置为 10,000。

端口范围

基于 Unix 的操作系统通常会限制服务器上可以打开的端口数量。您可以通过以下命令查看当前允许的范围:

cat /proc/sys/net/ipv4/ip_local_port_range

# 32768 60999
            

上面的输出显示服务器最多可以处理 28,231 (60,999 - 32,768) 个连接,因为每个连接都需要一个空闲端口。尽管我们建议水平扩展以增加允许的连接数,但您可以通过更新服务器配置文件中允许的端口范围来增加可用的开放端口数/etc/sysctl.conf。

守护进程

在大多数情况下,您应该使用进程管理器(例如 Supervisor)来确保 Reverb 服务器持续运行。如果您使用 Supervisor 运行 Reverb,则应更新minfds服务器supervisor.conf文件的设置,以确保 Supervisor 能够打开处理与 Reverb 服务器的连接所需的文件:

[supervisord]

...

minfds=10000
            


水平扩展

如果您需要处理的连接数量超过单个服务器允许的数量,您可以水平扩展Reverb服务器。利用 Redis 的发布/订阅功能,Reverb 能够管理跨多个服务器的连接。当应用程序的 Reverb 服务器之一收到消息时,该服务器将使用 Redis 将传入消息发布到所有其他服务器。

要启用水平扩展,您应该在应用程序的配置文件中将REVERB_SCALING_ENABLED环境变量设置为:true.env

REVERB_SCALING_ENABLED=true

接下来,您应该有一个专用的中央 Redis 服务器,所有 Reverb 服务器都将与该服务器进行通信。 Reverb 将使用为您的应用程序配置的默认 Redis 连接将消息发布到所有 Reverb 服务器。

启用 Reverb 的扩展选项并配置 Redis 服务器后,您只需在reverb:start能够与 Redis 服务器通信的多个服务器上调用该命令即可。这些 Reverb 服务器应放置在负载平衡器后面,该负载平衡器在服务器之间均匀分配传入请求。

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: