physical
v3.0.3
Published
virtual physical network infrastructure layer interface
Downloads
18
Maintainers
Readme
Physical Connection Interface
https://www.npmjs.com/package/physical
Physical is an interface for a cross environment, cross system connection protocol that enables a democratization of internet resources by closing the gap between servers and clients in the connectivity department
Ensures you can negotiate connections and send data.
Reference Implementations
- https://www.npmjs.com/package/physical-node
- https://www.npmjs.com/package/physical-chrome
Interoperability of known implementations
|requester\responder|physical-node|physical-chrome| |---|---|---| |physical-node | WebSocket P/C | WebSocket P/C | |physical-chrome | WebSocket C/P | WebRTC |
Usage:
If you want to connect with another host, you must
- create a
new Physical
object - call
physical.request()
to generate a serializableSYNQ
object - pass the
SYNQ
object to the other host - wait for an
ACK
object, deserialize if necessary - call
physical.open(ack)
- wait for onOpen to fire.
If you want to let a host connect to you with a SYNQ
object, you must
- create a
new Physical
object - call
physical.respond(synq)
to generate a serializableACK
object - pass the
ACK
object to the other host - wait for onOpen to fire.
Methods:
request() : Promise<SYNQ>
generate a SYNQ request
SYNQ must contain a list of protocol names in SYNQ.supported
,
and the protocol offers in SYNQ.body
in the same order.
respond(synq : SYNQ) : Promise<ACK>
respond to a SYNQ request
ACK must choose one compatible protocol and return a compliant response
open(ack : ACK) : void
unlock and open a physical connection
can only be called if request() has been called.
setOnOpen(f : ()=>void) : void
register a function to be called when the connection opens
send(message : string) : void
dispatch a message to the other host. throws exception if if the connection is not open
setOnMessage(f : (message : string) => void) : void
register a function to be called when a message comes through the connection this can be called multiple times if needed to update the onMessage function.
undefined behavior if not set.
close() : void
close the connection from your end
setOnClose(f : ()=>void) : void
register a function to be called when the connection closes