ob娱乐下载Symfony会实时推送功能!
能够实时广播数据从服务器到客户要求许多现代网络和移动应用程序。
因为最流行的PHP sapi不能保持持久连接,Symfony并不提供任何内置的方法将数据给客户直到现在。ob娱乐下载这是强制依赖外部服务提供商或其他编程语言来实现这样的功能。
这次结束了!说你好水银组件和MercureBundle!
作为他们的名字表明,他们实现美居酒店,一个开放的协议而设计的发布更新从服务器到客户端。这是一个现代和高效的基于定时器的轮询和WebSocket替代。
这两个新人Symfony家族是专门为用例设计要求实时功ob娱乐下载能如:
- 创建一个用户界面反应在生活的变化由其他用户(如用户更改当前浏览其他用户的数据,所有UI立即更新)
- 通知用户时异步的工作已经完成
- 创建聊天应用程序
因为它是建立在上面服务器发送的事件(SSE),水银开箱即用的支持在大多数现代浏览器(边缘,即需要一个polyfill),并高层实现在许多编程语言。
美居酒店提供了一个授权机制,自动再次在网络检索的丢失更新问题,“无连接”推为智能手机和auto-discoverability(支持客户端可以自动发现和订阅更新的给定资源由于特定的HTTP头)。
所有这些特性在Symfony的集成支持!ob娱乐下载
与WebSocket只是兼容HTTP 1. x,美居酒店利用提供的多路复用功能HTTP / 2和HTTP / 3(但还支持HTTP的旧版本)。
在这段录音中您可以看到一个Symfony的web API利用水银和APIob娱乐下载平台更新生活反应应用和移动应用(本地)反应生成使用API平台客户端发电机:
安装
第一步能够“推动”Symfony是安装官方ob娱乐下载ob娱乐下载Symfony Flex配方的水银集成:
1
美元作曲家要求美居酒店
管理持久连接,水银依赖于一个中心:一个专用的服务器处理持久上交所与客户的联系。Symfob娱乐下载ony应用将更新发布中心,广播他们的客户。
官方和开源(AGPL)的实现可以为静态二进制文件从下载中心Mercure.rocks。
运行以下命令启动它:
1
美元JWT_KEY =“aVerySecretKey”ADDR =“localhost: 3000”ALLOW_ANONYMOUS = 1 CORS_ALLOWED_ORIGINS = *。/水银
请注意
或者二进制,码头工人形象,执掌图Kubernetes和管理、高可用性中心也由Mercure.rocks提供。
提示
的API平台分布配有一个码头工人组成配置以及舵角表Kubernetes 100%兼容Symfony,并包含水银中心。ob娱乐下载你甚至可以复制他们在您的项目中,如果你不使用API的平台。
现在,设置你的中心的URL的值MERCURE_PUBLISH_URL
env var。.env
你的项目已经更新的文件Flex配方提供示例值。美居酒店中心的URL (http://localhost: 3000 /中心
默认情况下)。
此外,Symfony应用程序必须承ob娱乐下载担JSON Web标记(JWT)美居中心授权发布更新。这JWT应该存储在MERCURE_JWT_SECRET
环境变量。
JWT必须使用相同的密钥比中心用来验证智威汤逊(aVerySecretKey
在我们的示例中)。其载荷必须至少包含以下结构允许发布:
1 2 3 4 5
{“水银”:{“发布”:[]}}
因为数组为空,Symfony应用只会授权发布公共更新。ob娱乐下载
提示
jwt。io网站是一种方便的方法来创建和智威汤逊迹象。签出这JWT例子,资助出版的权利目标(注意数组中的明星)。不要忘记设置密钥正确的底部面板的形式!
谨慎
不要把秘密密钥MERCURE_JWT_SECRET
,它不会工作!这个环境变量必须包含一个JWT,签署了秘密密钥。
同时,一定要保持秘密密钥和智威汤逊……秘密!
出版
水银组件提供了一个更新
值对象代表更新发布。它还提供了一个出版商
服务调度中心的更新。
的出版商
服务可以被注入在任何其他服务,包括控制器,使用服务自动装配特点:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /控制器/ PublishController.php名称空间应用程序\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\美居酒店\出版商;使用ob娱乐下载\组件\美居酒店\更新;类PublishController{公共函数__invoke(出版商美元出版商):响应{美元更新=新更新(“http://example.com/books/1”,json_encode (“状态”= >“OutOfStock”)));/ /出版商服务是一个调用对象美元出版商(美元更新);返回新响应(“发表!”);}}
第一个参数传递更新
构造函数是主题被更新。应该是这个主题IRI(国际化资源标识符,RFC 3987):一个惟一的标识符的资源被派出。
通常,这个参数包含资源的原始URL传递给客户端,但它可以是任何有效的IRI,它不一定是一个存在的URL(类似于XML名称空间)。
第二个参数的构造函数的内容更新。它可以是任何东西,任何格式的存储。然而,超媒体格式序列化资源如JSON-LD、原子,建议HTML或XML。
订阅
订阅更新在JavaScript中很简单:
1 2 3 4 5
常量es =新EventSource (“http://localhost: 3000 /中心?主题= '+encodeURIComponent(“http://example.com/books/1”));es。onmessage =e= >{/ /将每次发布的更新服务器控制台. log (JSON.parse (e.data));}
正如您可以看到的,你不需要任何JS库或SDK。它只是工作!
水银还允许订阅几个主题,并使用URI模板模式:
1 2 3 4 5 6 7 8 9 10 11 12
/ / URL是一个内置的JavaScript类操作URL常量u =新URL (“http://localhost: 3000 /中心”);u.searchParams.append (“主题”,“http://example.com/books/1”);/ /订阅更新几本书的资源u.searchParams.append (“主题”,“http://example.com/books/2”);/ /将审查所有资源匹配这个模式u.searchParams.append (“主题”,“http://example.com/reviews/ {id}”);常量es =新EventSource (u);es。onmessage =e= >{控制台. log (JSON.parse (e.data));}
提示
Google Chrome DevTools本地集成实用的用户界面显示在实时接收到的事件。
使用它:
- 打开DevTools
- 选择“网络”选项卡
- 点击请求美居中心
- 点击“EventStream”子。
提示
如果一个URI模板匹配一个URL使用测试在线调试器。
异步调度
而不是打电话出版商
直接服务,你也可以让Symfony调度提供的异步更新由于与信使组件集成ob娱乐下载。
首先,安装信使组件:
1
美元作曲家要求信使
你还应该配置一个运输(如果你不,处理程序将被称为同步)。
现在,你可以派遣水银更新
信使号的消息总线,它将被自动处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /控制器/ PublishController.php名称空间应用程序\控制器;使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\信使\MessageBusInterface;使用ob娱乐下载\组件\美居酒店\更新;类PublishController{公共函数__invoke(MessageBusInterface美元公共汽车):响应{美元更新=新更新(“http://example.com/books/1”,json_encode (“状态”= >“OutOfStock”)));/ /同步或异步(RabbitMQ、卡夫卡…)美元公共汽车- >调度(美元更新);返回新响应(“发表!”);}}
Web api
创建web API时,方便能够立即把新版本的所有连接设备的资源,和更新他们的观点。
API平台可以使用水银组件分派自动更新,每次一个API资源创建、修改或删除。
首先安装该库使用其官方食谱:
1
美元作曲家要求api
然后,创建以下实体就足以让一个有很多特色的超媒体的API,通过美居中心和自动更新广播:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / src /实体/ Book.php名称空间应用程序\实体;使用ApiPlatform\核心\注释\ApiResource;使用学说\ORM\映射作为ORM;/ * * *@ApiResource(水银= true) *@ORM实体\ * /类书{/ * * *@ORM\ Id *@ORM\列* /公共美元的名字;/ * * *@ORM\列* /公共美元状态;}
展示了在之前的记录,API平台客户端发电机还允许支架完成反应和反应本地应用从这个API。这些应用程序将自动实时渲染水银的内容更新。
结帐平台的专用API文档欧宝官网下载app了解更多关于它的美居酒店的支持。
要进一步
还有更多!ob娱乐下载Symfony利用美居酒店协议的所有功能,包括授权,可发现性通过Web链接和先进SSE配置。检出的全新的ob娱乐下载Symfony文档关于水银的文章了解所有的细节!
评论
不过,我放在我的javascript选项“withCredentials:真”:
const eventSource = new eventSource (url, {withCredentials:真});
请帮助!
谢谢
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
Guillaume Loulier is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now我已经等待了这么久:P