Взаимодействие с протоколом отладчика Chrome V8 через .NET (ClearScript) - PullRequest
1 голос
/ 19 мая 2019

Я поддерживаю корпоративное приложение C #, которое обеспечивает расширяемость конечного пользователя с помощью пользовательских функций JavaScript (с предоставлением избранных нескольких типов / прокси C #) (подумайте о финансовых алгоритмах).

Мы оцениваем эти функции, используя ClearScript (ранее мы использовали другую библиотеку под названием Noesis, однако мы отошли от этого).

Я бы хотел предложить конечным пользователям способ выполнить основную отладку сценариев (через веб-интерфейс). Как минимум - проверяйте переменные и переходите в / в функции.

Я успешно подключился к движку ClearScript с Chrome при локальном запуске приложения и смог пройтись по сценариям - однако я не думаю, что то же самое будет иметь смысл для конечных пользователей, когда они работают в производственной среде для различных пользователей. причины:

  • Может быть, их будет слишком сложно настроить
  • Возможные трудности с распределением портов
  • Возможные проблемы с брандмауэром

Что мне действительно нравится, так это интерфейс SignalR к отладчику V8 - веб-приложение будет взаимодействовать с SignalR, а SignalR будет взаимодействовать с отладчиком V8.

  • Кто-нибудь делал что-то подобное ранее?
  • Существуют ли какие-либо соответствующие библиотеки .NET, на которые мне следует обратить внимание?
  • Неужели я в своих мыслях, что это кажется довольно большой работой?
  • Любой другой совет?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Если вы упомянули Chrome и Nodejs, возможно, вы знаете, что Nodejs, Chrome и Edge естественным образом поддерживают WebSocket.Chrome и Edge лучше со всеми опциями безопасности.Для Nodejs вы можете найти стандартные библиотеки, такие как socket.io. На стороне сервера DotNet WebSocket Протокол WebSocket сегодня является языком общения.

0 голосов
/ 25 мая 2019

Это протокол, основанный на веб-сокете - хотя вы должны сделать запрос через HTTP, чтобы сначала получить tabId (запрос к /json/list)

https://chromedevtools.github.io/devtools-protocol/1-2/Debugger описывает протокол - есть разныеревизии, предназначенные для разных версий Chrome, но 1.2 (стабильная), кажется, работает с версией ClearScript, которую я использовал.

Так же как и взаимодействия типа запрос-ответ (команда) в веб-сокете, V8 также будет публиковать события -например, Debugger.scriptParsed & Debugger.paused в том же сокете.

Некоторые ключевые команды: Runtime.enable Debugger.enable Runtime.runIfWaitingForDebugger Debugger.getScriptSource Debugger.resume Debugger.evaluateOnCallFrame Runtime.getProperties

Я написал небольшой демонстрационный проект https://github.com/flakey-bit/ClearScriptDebugging/, в котором показан целевой процесс, отлаживаемый другим процессом.

...