diff --git a/guides/advanced/debugging.md b/guides/advanced/debugging.md new file mode 100644 index 0000000..c4588a9 --- /dev/null +++ b/guides/advanced/debugging.md @@ -0,0 +1,24 @@ +# Debugging and observability + +WebRTC is a very complex technology with a lot of moving pieces under the hood, which can make debugging very challanging. +Furtunately, there quite a lot of tools and techiniques created to make this process a bit easier. + +This tutorial will teach you a range of WebRTC debugging metchods - from simple to advanced ones. We will go through +how you can inspect and monitor information about ICE connection establishment, negotiation and RTP packets streams both +from the web browser and Elixir side of things. + +## WebRTC Internals + + +## Elixir WebRTC Dashboard + +## getStats + +## browser with logs + +## dumping packets from browser + +## turning off certs to see packets in Wireshark + + +mention debugging guide in "WebRTC for the curious" diff --git a/guides/assets/webrtc_internals_1.png b/guides/assets/webrtc_internals_1.png new file mode 100644 index 0000000..839a549 Binary files /dev/null and b/guides/assets/webrtc_internals_1.png differ diff --git a/guides/assets/webrtc_internals_2.png b/guides/assets/webrtc_internals_2.png new file mode 100644 index 0000000..48c93f4 Binary files /dev/null and b/guides/assets/webrtc_internals_2.png differ diff --git a/mix.exs b/mix.exs index b0a01d3..e9c70ad 100644 --- a/mix.exs +++ b/mix.exs @@ -12,6 +12,7 @@ defmodule ExWebRTC.MixProject do elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, description: "Implementation of the W3C WebRTC API", + aliases: aliases(), package: package(), deps: deps(), @@ -72,9 +73,15 @@ defmodule ExWebRTC.MixProject do ] end - defp docs() do + defp aliases do + [docs: ["docs", ©_images/1]] + end + + defp copy_images(_), do: File.cp_r!("guides/assets", "doc/assets") + + defp docs do intro_guides = ["intro", "negotiation", "forwarding", "consuming"] - advanced_guides = ["modifying", "mastering_transceivers"] + advanced_guides = ["modifying", "mastering_transceivers", "debugging"] [ main: "readme",