首页 > 解决方案 > (webview2)如何在 CDP 中比原始网络更快地获取 DevToolsProtocolEventReceived 消息?

问题描述

我使用 DevToolsProtocolEventReceived 在 C# 中获取“Network.webSocketFrameReceived”。我发现 webview2 在渲染浏览器后会给我事件,但是在 CDP(F12) 中的原始网络工具中,websocketframe 在渲染之前被记录;

标签: c#websocketwebview2

解决方案


非阻塞 CDP 事件将始终与 WebView2 进程中的页面呈现或其他处理竞争。

与 WebView2 相比,所有 CDP 事件都应以通常的方式在浏览器或 DevTools 中引发。但是,您在主机应用程序中接收事件时可能会遇到其他问题。该事件将跨进程发送到主机应用程序并在 WebView2 事件队列中排队等待 WebView2 UI 线程变得可用于引发事件。如果你当时有很多事件发生,或者如果你在 WebView2 的 UI 线程上做了很多工作,这都会延迟 CDP 事件。您可以尝试减少它以更早地接收事件,但它始终是非阻塞 CDP 事件与 WebView2 进程中发生的任何事情之间的竞争。

您可以阅读有关WebView2 线程模型进程模型的更多信息。


推荐阅读