Product
Introducing SSO
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
netflux
Advanced tools
Readme
Isomorphic Javascript peer to peer transport API for client and server.
Secure and fault tolerant full mesh peer to peer network based on RTCDataChannel and WebSocket.
Send/receive String and Uint8Array data types.
Documentation: https://coast-team.github.io/netflux
dist/netflux.node.es5.cjs.js
commonjs format, es5 code (see package.json#main).dist/netflux.node.es5.esm.js
ES module format, es5 code (see package.json#module).dist/netflux.browser.es5.umd.js
UMD format, es5 codedist/netflux.browser.es5.esm.js
ES module format, es5 code (see package.json#browser).dist/netflux.browser.es2015.esm.js
ES module format, es2015 code (see package.json#es2015).dist/netflux.browser.esnext.esm.js
ES module format, esnext code (see package.json#esnext).npm install netflux
3 peer dependencies to be installed in some cases:
rxjs
is necessary for both NodeJS and browsers if you want to take advantage of EcmaScript modules, tree-shaking etc. Otherwise it is already included into dist/netflux.browser.es5.umd.js
and dist/netflux.node.es5.cjs.js
bundles.npm install rxjs
uws
and text-encoding
if you target NodeJS (developing a bot):npm install uws text-encoding
Why peer dependencies?
Here is a basic usage example for client and server (checkout the documenation for more details).
Bot server is not mandatory. The group may completely be composed of clients only, as well as be composed of servers only or may also be mixed.
import { WebGroup, WebGroupState } from 'netflux'
// Create instance and set callbacks
const wg = new WebGroup()
wg.onMemberJoin = (id) => {
console.log(`Member ${id} has joined. Current members list is: `, wg.members)
// Say hello to the new peer
wg.sendTo(id, 'Hello, my name is Bob')
}
wg.onMemberLeave = (id) => {
console.log(`Member ${id} has left. Remained members are: `, wg.members)
}
wg.onMessage = (id, data) => {
console.log(`Message from ${id} group member`, data)
}
wg.onStateChange = (state) => {
console.log('The new Group state is ', state)
switch (state) {
case WebGroupState.JOINING:
// Do something
break
case WebGroupState.JOINED:
// Do something... for example invite a bot...
wg.invite('BOT_SERVER_WEB_SOCKET_URL')
// Or send message to all peers
wg.send('Hello everybody. I have just joined the group.')
break
case WebGroupState.LEFT:
// wg.key === ''
// wg.id === 0
// wg.myId === 0
// wg.members === []
// the current wg object is at the same state as if it was instantiated via new WebGroup(...), hence
// it can be reused to join another group for example.
// Do something...
break
}
}
// Join the group
wg.join('MY_UNIQUE_KEY_FOR_THE_GROUP')
import { Bot, WebGroupState } from 'netflux'
const http = require('http') // https is also possible
const server = http.createServer()
const bot = new Bot({
server: server,
webGroupOptions: {
// Any WebGroup options like for a client
},
})
bot.onWebGroup = (wg) => {
console.log('The current state is JOINING: ', wg.state === WebGroupState.JOINING)
// New instance of a WebGroup (Someone has invited this bot).
// See example above for client as it is the same API.
}
server.listen(BOT_PORT, _BOT_HOST)
// A client may invite this bot with the following URL: 'ws://BOT_HOST:BOT_PORT'
Netflux used as a transport layer for Multi User Text Editor (MUTE repo) developed by our team. The demo version is available on: https://coedit.re.
FAQs
Peer to peer isomorphic transport API based on WebRTC and WebSocket. Allows to create/join full mesh network
The npm package netflux receives a total of 456 weekly downloads. As such, netflux popularity was classified as not popular.
We found that netflux demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.