Giter Site home page Giter Site logo

orbit-core's Introduction

orbit-core

npm version CircleCI Status Gitter Matrix

Communication protocol on IPFS

Orbit is a serverless, distributed, p2p communication library and protocol that enables feed-based information sharing, such as real-time chat, in the IPFS peer-to-peer network.

This repository is the core library of Orbit. This library is intended to be used in your Node.js or Browser applications.

Used in the various Orbit projects:

Table of Contents

Install

This module uses npm and node.

npm install orbit_

Usage

See examples/browser/index.html for a more detailed example.

'use strict'

const Orbit = require('orbit_')

const ipfs = new Ipfs()

ipfs.on('ready', () => {
  const orbit = new Orbit(ipfs)

  const username = 'Example Bot'
  const channel = 'HelloWorld'

  orbit.events.on('connected', () => {
    console.log(`-!- Orbit connected`)
    orbit.join(channel)
  })

  orbit.events.on('joined', channelName => {
    orbit.send(channelName, '/me is now caching this channel')
    console.log(`-!- Joined #${channelName}`)
  })

  // Listen for new messages
  orbit.events.on('entry', (entry, channelName) => {
    const post = entry.payload.value
    console.log(`[${post.meta.ts}] <${post.meta.from.name}> ${post.content}`)
  })

  // Connect to Orbit network
  orbit.connect(username).catch(e => console.error(e))
})

API

See API documentation for full details.

Development

Install Dependencies

git clone https://github.com/orbitdb/orbit-core.git
cd orbit-core/
npm install

Run example development environment

npm run dev

Run Tests

npm test

Build Library and Distributables

npm run build

Distributable (ES5 minified for browsers) will be located in dist/.

Contribute

We would be happy to accept PRs! If you want to work on something, it'd be good to talk beforehand to make sure nobody else is working on it. You can reach us on Gitter, or in the issues section.

We also have regular community calls, which we announce in the issues in the @orbitdb welcome repository. Join us!

If you want to code but don't know where to start, check out the issues labelled "help wanted".

For specific guidelines for contributing to this repository, check out the Contributing guide. For more on contributing to OrbitDB in general, take a look at the @OrbitDB welcome repository. Please note that all interactions in @OrbitDB fall under our Code of Conduct.

License

MIT © 2016-2019 Protocol Labs Inc., Haja Networks Oy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.