Open harveysanders opened 2 years ago
The Global Session View:
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ┌───────────────────────────────────────────────┐ │
│ │nick | IP | latency (ms) │ │
│ │----------------------------------------- │ │
│ │jk | 127.0.0.1:56763 | 23.24 │ │
│ │peewee | 127.0.0.1:68376 | 54.23 │ │
│ └───────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ ┌────────────────────────────┐ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ │C│D│E│F│G│A│B│C│D│E│F│G│A│B│C│D│E│F│G│A│B│C│D│E│F│G│A│B│ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │jk played C-3 │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │peewee played A-4 │ │
│ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ │jk played E-3 │ │
│ └────────────────────────────┘ │
│ │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
This is great for initial setup!
How would we calculate the latency between peers? Periodically send pings to each peer and take the average?
Proposal in protocol-version v0.0.1
is to use the low-level / already implemented in the websocket-stack Ping
-Pong
-frames. See https://github.com/rog-golang-buddies/rapidmidiex/issues/17
How the clients handle the latency-update-information is up to the clients. They could even draw a graph over time or indeed take an average or I was thinking simply updating when a new value comes in.
We need some wireframes or diagrams to visually explain the application. I started a rough draft here. Let's discuss and build off it.
Update this image as necessary: