npm

Ready to take your JavaScript development to the next level? Meet npm Enterprise - the ultimate in enterprise JavaScript.Learn more »

msg-fabric-core

0.7.6 • Public • Published

msg-fabric-core

msg-fabric-core is a uniform messaging API for writing distributed (network) actors.

In a browser environment, use msg-fabric-core to communicate in the main context, an IFrame, a Web Worker, over an RTCDataChannel, or over a WebSocket.

In a NodeJS environment, communciate over TCP, TLS, duplex Streams, WebSockets, or use a plugin to bridge over NATS or MQTT.

Sent packets are synchronously cloned, thereby preventing accidental mutation. Furthermore, packets are only encoded to bytes when needed to transmit across a stream-oriented connection — WebSocket, RTCDataChannel, TCP/TLS, or similar stream.

A collection of ES6 modules are published for both NodeJS and Web platforms, as well as all the core plugins, to allow crafting a build including only is required to solve the problem at hand.

Inspired by:

Examples

import FabricHub from 'msg-fabric-core' 
const hub = FabricHub.create()
Add a Target
const tgt_addr = hub.local.addTarget(pkt => {
  console.log('pkt target received pkt:', pkt)
 
  if (pkt.body.id_reply) {
    console.log('replying to:', pkt.body.id_reply)
    hub.send( pkt.body.id_reply, { ts: new Date, echo: pkt.body })
  }
})
Send a message and await a reply
const reply = hub.local.addReply()
hub.send(tgt_addr,
  { msg: 'hello readme example with reply',
    id_reply: reply.id
  })
 
reply.then( ans => {
  console.log('Received reply', ans) 
})

Connections and Platforms

Browser hub connections

Works out of the box with Web APIs like:

hub.connect('ws://«host»:«port»')
hub.connect('wss://«host»:«port»')
 
hub.web.connect( a_message_channel.port1 )
hub.web.connect( a_web_worker || self )
hub.web.connect( an_iframe )
 
hub.web.connectWS( a_websocket )
hub.web.connectStream( an_rtc_data_channel )
NodeJS hub connections

Works out of the box with NodeJS APIs like:

See plugins/net

hub.connect('tcp://«host»:«port»')
hub.connect('tls://«host»:«port»')
 
hub.tcp.createServer()
hub.tcp.connect({ host, port })
 
hub.tls.createServer( tls_options )
hub.tls.connect({ host, port })
 
hub.direct_stream.connect( hub_other )
 
// WebSockets also work server-side
hub.web.connectWS( a_websocket )
Same-process hub connections

See plugins/direct

hub.direct.connect( hub_other )

License

2-Clause BSD

install

npm i msg-fabric-core

Downloadsweekly downloads

22

version

0.7.6

license

BSD-2-Clause

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability