{"id":13482121,"url":"https://github.com/dborzov/netvis","last_synced_at":"2025-03-27T12:32:18.394Z","repository":{"id":22458912,"uuid":"25797517","full_name":"dborzov/netvis","owner":"dborzov","description":"d3.js-based tool to visualize network communication for arbitrary protocols","archived":false,"fork":false,"pushed_at":"2015-02-20T03:59:13.000Z","size":2136,"stargazers_count":17,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-01T17:31:40.814Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.borzov.ca/netvis/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dborzov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-27T01:03:14.000Z","updated_at":"2024-07-10T13:50:49.000Z","dependencies_parsed_at":"2022-08-20T15:20:19.015Z","dependency_job_id":null,"html_url":"https://github.com/dborzov/netvis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dborzov%2Fnetvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dborzov%2Fnetvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dborzov%2Fnetvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dborzov%2Fnetvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dborzov","download_url":"https://codeload.github.com/dborzov/netvis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222252095,"owners_count":16955966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:00:59.190Z","updated_at":"2024-10-30T15:31:45.701Z","avatar_url":"https://github.com/dborzov.png","language":"JavaScript","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"NetVis\n======\n( good place to start is [the showcasing page](http://dborzov.github.io/netvis).)\n\nNetVis is a highly customizable javascript framework for building interactive network visualizations:\n\n* Visualize any network activity by describing your network events in a straightforward JSON-based NetVis format detailing network nodes, events and messages.\n\n* Convert your server logs / network trace files to NetVis format and quickly visualize them.\nGeneric nature of the tool means support for visualizing communication in any existing protocols, including IP, TCP, HTTP, TSL, BitCoin or IPFS as well as a pefrect tool for  developing new network protocols.\n\n* Browse and traverse your network model with the d3-based graph visualization and time playback controls (play/pause/ffwd/rwind/speed) for events.\n\n* Customize the looks and appearance easily by overwriting the default View handlers in plain javascript. NetVis maintains the form and function customization separate. Specifying custom colors and tags for nodes and messages, or things like depicting the nodes on the georgaphical map is super simple.\n\n\nNetVis is built by the IPFS (ipfs.io, github.com/jbenet/ipfs) and Filecoin (filecoin.io) team.\n\nWhat can NetVis do for me?\n-------------\n\nHere is an example of the use case:\n\n1. Live nodes implementing protocols run, generating a real sequence of events. They store this sequence in one or many log files.\n2. The log files are consolidated into one netvis history.\n3. The history is fed into a simulator, which runs the visualization.\n\nThis means that the live nodes / producers need not emit netvis exactly; we can have a processing step in the pipeline that converts whatever the native protocol logs are into netvis. (for example, combining two differet entries, announcing an outgoing + incoming packet, into one single netvis message entry)\n\nAnd it also means that simulators need not ingest netvis directly, but can also be processed to fit their purposes better. This makes netvis a middle-format that seeks to ensure all the necessary elements are present, and that both the producer and consumer programs handle them correctly.\n\n\nnetvis pipeline:\n\n    live nodes --\u003e logs --\u003e netvis logs --\u003e simulator input --\u003e simulator\n\n\n\nNetVis format\n------------\nSee the [specififcation draft](netvis.md).\n\nHere is an example of a NetVis file:\n\n```json\n  [\n    {\n      \"time\": \"2014-11-12T11:34:01.077817100Z\",\n      \"loggerID\":\"QmdqaPCyuyAD2DNGGVTEdUmH33sBF62YpSM7oWi1CoCkm8\",\n      \"level\": \"info\",\n      \"event\":\"nodeEntered\",\n      \"name\": \"Earth\"\n    },\n\n    {\n      \"time\": \"2014-11-12T11:34:01.477817180Z\",\n      \"loggerID\":\"QmdqaPCyuyAD2DNGGVTEdUmH33sBF62YpSM7oWi1CoCkm8\",\n      \"level\": \"info\",\n      \"event\":\"messageSent\",\n      \"destinationNode\": \"Qmd9uGaZ6vKTES5nezVyCZDP2zJzdii2EXWiCbyGYq1tZX\",\n      \"message\":\n      {\n          \"request_id\": \"c655d844aed528caabfad155408ee5832ba64d78\",\n          \"time\": \"2014-11-12T11:34:01.477817180Z\",\n          \"protocol\": \"IPFS 0.1\",\n          \"type\": \"join\",\n          \"contents\": \"{\\\"body\\\":\\\"Hello Jupiter!This is Earth, bow to our might!\\\"}\"\n      }\n    },\n\n    {\n      \"time\": \"2014-11-12T11:34:02.000000003Z\",\n      \"loggerID\":\"QmdqaPCyuyAD2DNGGVTEdUmH33sBF62YpSM7oWi1CoCkm8\",\n      \"level\": \"info\",\n      \"event\":\"messageReceived\",\n      \"sourceNode\": \"Qmd9uGaZ6vKTES5nezVyCZDP2zJzdii2EXWiCbyGYq1tZX\",\n      \"message\":\n      {\n          \"request_id\": \"a001c4d79b323808729ecfe673d84048e1725b39a96049dce2241dbd11d6abf9\",\n          \"time\": \"2014-11-12T11:34:01.900000003Z\",\n          \"protocol\": \"IPFS 0.1\",\n          \"type\": \"lol\",\n          \"contents\": \"lol wat\"\n      }\n    }\n  ]\n\n```\n\nWe see an example of simple network activity where a node \"Earth\" sends a message to \"Jupiter\" and get a response.\n\nNote that while the Earth node is defined with a `nodeEntered` event, Jupiter is only introduced implicitely, by being mentioned. That is acceptable, NetVis tries to deduce things as much as possible.\n\n\nOther\n----------------\nAlso see:\n- **[DESIGNDOC.md](DESIGNDOC.md)** - netvis project design and API doc\n- **[netvis.md](netvis.md)** netvis network log file format specification\n- **[ROADMAP.md](ROADMAP.md)**, project development roadmap\n- **[DEVELOPING.md](DEVELOPING.md)**, internal designdoc. If you are considering contributing, or just want to see how things work internally, awesome! That would be a good place to start.  \n\n\nMIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdborzov%2Fnetvis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdborzov%2Fnetvis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdborzov%2Fnetvis/lists"}