【发布时间】:2019-07-05 02:52:21
【问题描述】:
我正在努力让我的服务器端渲染和 Service Worker 在服务器端进行协作。
有关本地主机的信息 -> 工作
这是按预期工作的。服务人员工作并在每次更新时更新我的应用程序。而且; curl localhost:8082 发回我的信息。
我使用以下命令启动我的应用程序:npm run ssr
"ssr": "npm run build:ssr && npm run serve:ssr",
"build:ssr": "npm run build:client-and-server-bundles",
"serve:ssr": "node dist/server.js",
"build:client-and-server-bundles": "ng build --prod && npm run webpack:server",
"webpack:server": "webpack --config webpack.server.config.js --progress --colors"
有关生产的信息: -> 不工作
网站通过 HTTPS:https://airdropers.io 网站进程在关闭端口上运行,并且 HAPROXY 将流量从 443 重定向到网络服务器的端口
Web 服务器日志上可见的问题:无法订阅通知 错误:此浏览器禁用或不支持 Service Worker
额外信息:
本地和生产上的节点js是一样的:v9.0.0 我使用以下过程构建生产:
- git 拉
- npm run build:ssr
- pm2 启动 dist/server.js
2019 年 2 月 23 日更新
我现在有了更深的了解。 我的问题是我使用诸如“node dist/server.js”之类的节点命令启动我的 SSR/PWA 服务器。
据我了解,“node dist/server.js”不适用于 Service Worker (PWA) 我引用 (https://angular.io/guide/service-worker-getting-started)
由于 ng serve 不适用于服务工作者,因此您必须使用 单独的 HTTP 服务器在本地测试您的项目。你可以使用任何 HTTP 服务器。下面的示例使用来自 npm 的 http-server 包。 减少冲突的可能性,避免服务陈旧 内容,在专用端口上测试并禁用缓存。
我无法使用http-server dist/browser 启动,因为我会失去 SSR 功能。
如何启动我的 PWA/SSR 服务器?
我应该使用什么命令?
我要做什么构建?
2019 年 2 月 24 日更新
正如@Gökhan Kurt 所提到的,服务人员无法与我的 SSR 服务器正常工作。 我需要用于 SEO 的 SSR,我需要用于浏览器推送通知的服务人员。 我有什么解决方案来处理浏览器用户推送通知? One Signals 等第三方库?
欢迎任何想法建议来帮助我完成这项工作。 谢谢你的支持, 亚历克斯
【问题讨论】:
-
听起来您需要对 service worker 安装进行门控,以免尝试在节点环境中注册。
-
@abraham 是什么意思?我热衷于追踪任何可能的线索和想法。
-
愚蠢的问题可能......连接是否需要在 https 中端到端才能工作?反向代理终止 SSL?
-
我现在对我的问题有了更深入的了解。我现在将分享更新。
-
@aorfevre 你解决了这个问题吗
标签: angular progressive-web-apps server-side-rendering angular-service-worker