wasabi
wasabi copied to clipboard
Unreliable Transport Support
WebRTC is the next frontier for realtime communications, and Wasabi accidentally supports transmission over a data channel. Unfortunately, it was not built to tolerate unreliable transmission.
I want to re-engineer the data transmission to support the ordered
and maxRetransmissions
attributes of a data channel. This will necessitate "RPC decoration" or some other way of specifying whether invocations of a specific RPC should be ordered and/or reliable.
It will also require a way to pass in or create various data channels with the different properties required.
Finally, it will require the ability to split up the packets made in processConnections
so that they can be sent piece-wise over the appropriate channels, likely requiring an abstraction for supporting transports of varying reliability.
Data transmission behavior has been moved into the Connection
class. By creating a Connection interface and providing a couple subclasses with Wasabi, we can add unreliable transmission support as well as the ability for user code to add support for other transmission types.