问题标签 [shared-worker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何检查 OpenFin 中的共享工作者?
当应用程序在 OpenFin 上运行时,我正在寻找一个选项来检查SharedWorker线程以调试和检查控制台日志。
我一直在 chrome 开发人员工具中调试我的基于 javascript react 的应用程序,并且共享工作人员检查可在 chrome://inspect/#workers 访问。但是在 OpenFin 上运行时,我找不到任何检查共享工作者的选项。
有什么建议吗?
electron - electron:如何在 BrowserWindow 中打开 chrome://inspect 特殊 url 来调试 SharedWorkers
我需要从 SharedWorkers 访问调试信息。在常规的 chrome 窗口中,我会通过打开 chrome://inspect 来做到这一点,但我无法在电子的 BrowserWindow 中实现同样的效果。
我尝试发行
从开发工具控制台,但我得到一个空白窗口,在新窗口中打开开发工具将显示
有什么线索吗?
javascript - 每次在 Javascript 中使用 fetch() 时,如何执行函数?
每次在我的脚本中发出 HTTP 请求时,我都会尝试向我发布一条消息,sharedWorker
以节省我在每次 HTTP 请求后必须手动执行的操作。
我设法让它像这样工作:
当我创建一个new XMLHttpRequest()
这工作正常并且该sessionStorage
项目是用数据设置的。但是,我不使用XMLHttpRequest
,而是使用fetch()
. 这似乎并没有创造出XMLHttpRequest
我认为的那样。
每次调用 new 时,如何postMessage
在 my 上执行该函数?最好是在完成之后。App.__webWorker
fetch()
更新:这是我自己的框架,我使用 Smarty 模板引擎,所以忽略{{}}
前缀区域。这就是我从 PHP 将数据导入脚本的方式。
更新:我试图这样做,但我得到Uncaught (in promise) TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
:
javascript - 如何与 SharedWorker 共享数据
网上已经有很多关于 SharedWorker 和 StackOverflow 的讨论和教程,但没有一个真正实现了最基本的目标——直接在两个 SharedWorker 之间传递数据。
对我来说,SharedWorker 相对于专用 web Worker 的优势在于前者允许通过不同的选项卡、iframe 和线程进行直接通信。我尝试了以下方法:
(shared.html:)
(shared.js)
单击“启动 A”然后单击“启动 B”后,我在控制台上收到以下错误消息:
shared.html:15 未捕获的 DOMException:无法在“MessagePort”上执行“postMessage”:无法克隆 MessagePort,因为它没有被传输。
换句话说,我无法通过端口。
任何用途的 SharedWorker 也是如此。似乎在大多数情况下,常规的专用 Worker 就足够了。
angular - 如何在 Angular 中使用 SharedWorker?
我的 Angular 应用程序中已经有了 Workers。但我正在尝试创建一个共享工作者,但它失败了,说“无法获取工作者脚本”。在控制台中。
如果我用 Worker 替换 SharedWorker - 它可以完美运行。
当然,我根据需要制作了一切。创建了一个附加.tsconfig
文件:
并添加webWorkerTsConfig
到angular.json
配置中:
我发现了 Nikita Barsukov 的这篇文章,但它仅在您的 Worker 以单个文件存储在assets
文件夹中时才有效。但是我的 SharedWorker 包含十几个 .ts 文件,应该像普通 Worker 一样打包。
javascript - 无法使用 worker-loader 创建 SharedWorker
尝试使用worker-loader创建 SharedWorker 它没有创建它,只是创建了 Worker。似乎它忽略了选项。
父代码中的用法
工人代码
webpack 规则
但在控制台中,它显示为 Worker 类。它有什么问题?
依赖关系
这件事要求我添加更多细节:“看起来你的帖子主要是代码;请添加更多细节。” 这只是一个存根文本。对不起。
sockets - 为什么 GitHub 将 SharedWorker 用于 WebSocket
我很好奇 GitHub 在问题更新时如何重新渲染组件,并发现它们在 SharedWorker 中使用 WebSocket。
但是为什么他们在 SharedWorker 内部使用它,而不是在主线程中?多线程使用 WebSocket 的主要好处是什么?
javascript - 如何在浏览器客户端中通过 websockets 实现 mqtt?
我正在尝试使用Paho JS 库在我的 Web 应用程序中通过 websocket 使用 mqtt来实现通知。我需要使用持久连接(接收任何待处理的消息),因此必须使用唯一的客户端 ID。
问题 1:多个选项卡充当 mqtt 客户端,使用相同的客户端 ID,因此在无限循环中断开和连接(因为我已将重新连接设置为 true)
我使用 Shared Worker 解决了上述问题,它现在只为所有选项卡使用一个连接,这很棒。但现在我遇到了另一个问题。
问题 2:当我在两个不同的浏览器(例如 Chrome 和 Firefox)中打开我的应用程序时,我得到了不同的共享工作者,因此两个客户端再次使用相同的 clientId 导致连接/断开循环。
任何建议将不胜感激。
laravel - Pusher - 共享网络工作者变量范围
我在 Laravel 中使用共享工作者作为推送器,这里 XYZABC 是我的推送键作为字符串,但是有没有办法可以使用我的刀片文件中定义的 ENV 变量或变量,所以我不必硬编码键那里,还需要根据国家切换频道。那么有没有办法访问共享工作脚本中刀片中定义的java脚本变量?这是我的代码
这是我工作的推送者社区的示例代码
https://github.com/pusher-community/pusher-with-shared-workers
javascript - React 中的 SharedWorker
我在我的 React 应用程序中使用 Web Worker,它有一个如下所示的辅助类:
工人看起来像:
然后我可以使用创建工人
这工作正常,但是我现在需要使用 SharedWorker 并且我无法让它工作。我发现的所有资源都显示了普通的网络工作者。有这个 SO Question Using Shared Worker in React但它对我不起作用。它实际上看起来与我的常规 WebWorker 代码相同,但这不起作用,因为 SharedWorkers 要求您实现一个 onconnect 函数,而我不明白该怎么做。我发现的非反应示例将工作脚本显示为:
但是如果我把它放在我的 worker js 文件中并使用 WebWorker 帮助程序遵循相同的模式,worker.toString() 只会返回 [object Window] 并且它永远不会被执行。我不明白如何创建一个将被调用的“onconnect”函数。我尝试过这样的变体:
最终没有什么对我有用。显然我根本不懂 Javascript 中的导出。如果我只是导出一个名为 onconnect 的函数,它永远不会被调用,显然 onconnect 必须属于某种类上下文(如 Window 或 Self),但我不明白需要什么
谢谢你,特洛伊。