Gulp 如何将AEM 6.3传送到Livereload clientlibs

Gulp 如何将AEM 6.3传送到Livereload clientlibs,gulp,aem,livereload,Gulp,Aem,Livereload,我正在使用gulp aemsync插件将css和js更改同步到AEM实例上的clientlib。A有一个gulp任务,可以很好地监视运行gulp aemsync的js和css(刷新时网站上会有更改),但是如果我有点懒,那么实时重新加载工作会很好,这样我就不必在工作时手动刷新页面 我尝试了以下两个在线指南: 遵循以下步骤: 在AEM实例上安装Netty软件包 在AEM实例上安装ACS AEM工具包 安装RemoteLiveReload chrome扩展(AEM实例托管在AWS上) 这不起作

我正在使用gulp aemsync插件将css和js更改同步到AEM实例上的clientlib。A有一个gulp任务,可以很好地监视运行gulp aemsync的js和css(刷新时网站上会有更改),但是如果我有点懒,那么实时重新加载工作会很好,这样我就不必在工作时手动刷新页面

我尝试了以下两个在线指南:

遵循以下步骤:

  • 在AEM实例上安装Netty软件包
  • 在AEM实例上安装ACS AEM工具包
  • 安装RemoteLiveReload chrome扩展(AEM实例托管在AWS上)
这不起作用,所以我让一名DevOps工程师在AEM实例上打开35729端口(这是Livereload的默认端口)。这仍然不起作用,当我单击chrome浏览器扩展来同步它时,我会收到以下消息:

无法连接到LiveReload服务器。请确保LiveReload 2.3(或更高版本)或其他兼容服务器正在运行。

有谁能帮我弄清楚这一点,因为我真的很想让它工作,以简化我的工作流程

谢谢

免责声明:此答案基于我在某个时候使用的设置,绝对不是一个完整/有效的答案。但它应该给你一个替代现有其他工具的选择,让你走到一半

我没有使用您提到的工具,但由于您使用的是gulp和aemsync,因此您可以执行以下操作:

在gulp设置中,创建一个websocket服务器,基本上每次触发aemsync将内容推送到AEM时,该服务器都会发布消息

// start a websocket server
const WebSocket = require('ws'); // requires "npm install ws"
const wss = new WebSocket.Server({ port: 8081 });
const connections = [];
wss.on('connection', function connection(ws) {
  connections.push(ws); // keep track of all clients

  // send any new messages that come to this server, to all connected clients
  ws.on('message', (d) => connections.forEach(connection => connection.send(d)));
});

// create a new websocket to send messages to the websocket server above
const ws = new WebSocket('ws://localhost:8081');

// send a regex to the server every second
// NOTE: CHANGE this to run when aemsync is triggered in your build 
setInterval( () => ws.send('reload'), 1000 );
然后,在您的JS代码(在AEM上)或真正的
标记中,确保不会超出您的本地(或开发人员/产品),您可以设置websocket侦听器来刷新页面:

socket = new WebSocket('ws://localhost:8081');
socket.onopen  = // add function for when ws is open
socket.onclose  = // add function for when ws is closed
socket.onerror = // add function for when ws errors
// listen to messages and reload!
socket.addEventListener('message', function (event) {
  location.reload();
});
或者,您可以使用我开发的chrome插件:


无论如何它都不是完美的。然而,对于一个基本的设置,它应该工作得很好!a您不需要触摸AEM JS。

谢谢Ahmed,我已经创建了一个websocket服务器,按照您的建议向浏览器窗口发送重新加载命令。效果很好。对于任何试图使用AEM ACS commons live reload软件包进行此操作的人,请忘记它-它不起作用!