c# - (webview2)如何在 CDP 中比原始网络更快地获取 DevToolsProtocolEventReceived 消息?
问题描述
我使用 DevToolsProtocolEventReceived 在 C# 中获取“Network.webSocketFrameReceived”。我发现 webview2 在渲染浏览器后会给我事件,但是在 CDP(F12) 中的原始网络工具中,websocketframe 在渲染之前被记录;
解决方案
非阻塞 CDP 事件将始终与 WebView2 进程中的页面呈现或其他处理竞争。
与 WebView2 相比,所有 CDP 事件都应以通常的方式在浏览器或 DevTools 中引发。但是,您在主机应用程序中接收事件时可能会遇到其他问题。该事件将跨进程发送到主机应用程序并在 WebView2 事件队列中排队等待 WebView2 UI 线程变得可用于引发事件。如果你当时有很多事件发生,或者如果你在 WebView2 的 UI 线程上做了很多工作,这都会延迟 CDP 事件。您可以尝试减少它以更早地接收事件,但它始终是非阻塞 CDP 事件与 WebView2 进程中发生的任何事情之间的竞争。
您可以阅读有关WebView2 线程模型和进程模型的更多信息。
推荐阅读
- matlab - 如何在 Matlab 中使用信号样本的移位版本创建矩阵?
- python - 在 sys.exit(app.exec_()) 之前不显示任何元素
- sml - 在 SML 中实现更快的 Fifo
- java - 负责从 web txt 获取数据的代码行的正确名称是什么?
- reactjs - FirebaseError: Function CollectionReference.add() 要求它的第一个参数是对象类型,但它是:一个函数
- php - 如何使用 jcrop 裁剪正确的图像
- r - R,列出学生为“B”或“C”的科目
- java - JUnit:放置测试方法的最佳策略
- r - 如何使用 R 将一个脚本中的变量调用到另一个脚本中?
- lua - 如何从字符串中提取数字?