Skip to content

docs: refactor examples #96

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 5, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ Let us know if you find any issue or if you want to contribute and add a new tut

## Examples

- [In Node.js](./nodejs)
- [echo](./nodejs/echo)
- [chat](./nodejs/chat)
- [In the browser](./browser)
- [mapper](./browser/mapper)
- [The standard echo net example with libp2p](./echo)
- [A simple chat app with](./chat)
- [See other nodes in the network using WebRTC Star discovery mechanism](./see-nodes)
1 change: 1 addition & 0 deletions examples/chat/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Chat example with libp2p
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js')
const multiaddr = require('multiaddr')
const Node = require('./libp2p-bundle')
const pull = require('pull-stream')
const async = require('async')
const Pushable = require('pull-pushable')
Expand All @@ -31,12 +30,12 @@ async.parallel([
], (err, ids) => {
if (err) throw err
const peerDialer = new PeerInfo(ids[0])
peerDialer.multiaddr.add(multiaddr('/ip4/0.0.0.0/tcp/0'))
peerDialer.multiaddr.add('/ip4/0.0.0.0/tcp/0')
const nodeDialer = new Node(peerDialer)

const peerListener = new PeerInfo(ids[1])
idListener = ids[1]
peerListener.multiaddr.add(multiaddr('/ip4/127.0.0.1/tcp/10333'))
peerListener.multiaddr.add('/ip4/127.0.0.1/tcp/10333')
nodeDialer.start((err) => {
if (err) {
throw err
Expand Down
80 changes: 80 additions & 0 deletions examples/chat/src/libp2p-bundle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
'use strict'

const TCP = require('libp2p-tcp')
const MulticastDNS = require('libp2p-mdns')
const WS = require('libp2p-websockets')
const Railing = require('libp2p-railing')
const spdy = require('libp2p-spdy')
const KadDHT = require('libp2p-kad-dht')
const multiplex = require('libp2p-multiplex')
const secio = require('libp2p-secio')
const libp2p = require('../..')

function mapMuxers (list) {
return list.map((pref) => {
if (typeof pref !== 'string') {
return pref
}
switch (pref.trim().toLowerCase()) {
case 'spdy': return spdy
case 'multiplex': return multiplex
default:
throw new Error(pref + ' muxer not available')
}
})
}

function getMuxers (muxers) {
const muxerPrefs = process.env.LIBP2P_MUXER
if (muxerPrefs && !muxers) {
return mapMuxers(muxerPrefs.split(','))
} else if (muxers) {
return mapMuxers(muxers)
} else {
return [multiplex, spdy]
}
}

class Node extends libp2p {
constructor (peerInfo, peerBook, options) {
options = options || {}

const modules = {
transport: [
new TCP(),
new WS()
],
connection: {
muxer: getMuxers(options.muxer),
crypto: [ secio ]
},
discovery: []
}

if (options.dht) {
modules.DHT = KadDHT
}

if (options.mdns) {
const mdns = new MulticastDNS(peerInfo, 'ipfs.local')
modules.discovery.push(mdns)
}

if (options.bootstrap) {
const r = new Railing(options.bootstrap)
modules.discovery.push(r)
}

if (options.modules && options.modules.transport) {
options.modules.transport.forEach((t) => modules.transport.push(t))
}

if (options.modules && options.modules.discovery) {
options.modules.discovery.forEach((d) => modules.discovery.push(d))
}

super(modules, peerInfo, peerBook, options)
}
}

module.exports = Node
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js')
const multiaddr = require('multiaddr')
const Node = require('./libp2p-bundle.js')
const pull = require('pull-stream')
const Pushable = require('pull-pushable')
const p = Pushable()
Expand All @@ -14,7 +13,7 @@ PeerId.createFromJSON(require('./peer-id-listener'), (err, idListener) => {
throw err
}
const peerListener = new PeerInfo(idListener)
peerListener.multiaddr.add(multiaddr('/ip4/0.0.0.0/tcp/10333'))
peerListener.multiaddr.add('/ip4/0.0.0.0/tcp/10333')
const nodeListener = new Node(peerListener)

nodeListener.start((err) => {
Expand Down
1 change: 1 addition & 0 deletions examples/echo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Echo example with libp2p
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js')
const multiaddr = require('multiaddr')
const Node = require('./libp2p-bundle')
const pull = require('pull-stream')
const async = require('async')

Expand All @@ -21,14 +20,14 @@ async.parallel([
// Dialer
const dialerId = ids[0]
const dialerPeerInfo = new PeerInfo(dialerId)
dialerPeerInfo.multiaddr.add(multiaddr('/ip4/0.0.0.0/tcp/0'))
dialerPeerInfo.multiaddr.add('/ip4/0.0.0.0/tcp/0')
const dialerNode = new Node(dialerPeerInfo)

// Peer to Dial
const listenerPeerInfo = new PeerInfo(ids[1])
const listenerId = ids[1]
const listenerMultiaddr = multiaddr('/ip4/127.0.0.1/tcp/10333/ipfs/' +
listenerId.toB58String())
const listenerMultiaddr = '/ip4/127.0.0.1/tcp/10333/ipfs/' +
listenerId.toB58String()
listenerPeerInfo.multiaddr.add(listenerMultiaddr)

dialerNode.start((err) => {
Expand Down
File renamed without changes.
File renamed without changes.
80 changes: 80 additions & 0 deletions examples/echo/src/libp2p-bundle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
'use strict'

const TCP = require('libp2p-tcp')
const MulticastDNS = require('libp2p-mdns')
const WS = require('libp2p-websockets')
const Railing = require('libp2p-railing')
const spdy = require('libp2p-spdy')
const KadDHT = require('libp2p-kad-dht')
const multiplex = require('libp2p-multiplex')
const secio = require('libp2p-secio')
const libp2p = require('../../..')

function mapMuxers (list) {
return list.map((pref) => {
if (typeof pref !== 'string') {
return pref
}
switch (pref.trim().toLowerCase()) {
case 'spdy': return spdy
case 'multiplex': return multiplex
default:
throw new Error(pref + ' muxer not available')
}
})
}

function getMuxers (muxers) {
const muxerPrefs = process.env.LIBP2P_MUXER
if (muxerPrefs && !muxers) {
return mapMuxers(muxerPrefs.split(','))
} else if (muxers) {
return mapMuxers(muxers)
} else {
return [multiplex, spdy]
}
}

class Node extends libp2p {
constructor (peerInfo, peerBook, options) {
options = options || {}

const modules = {
transport: [
new TCP(),
new WS()
],
connection: {
muxer: getMuxers(options.muxer),
crypto: [ secio ]
},
discovery: []
}

if (options.dht) {
modules.DHT = KadDHT
}

if (options.mdns) {
const mdns = new MulticastDNS(peerInfo, 'ipfs.local')
modules.discovery.push(mdns)
}

if (options.bootstrap) {
const r = new Railing(options.bootstrap)
modules.discovery.push(r)
}

if (options.modules && options.modules.transport) {
options.modules.transport.forEach((t) => modules.transport.push(t))
}

if (options.modules && options.modules.discovery) {
options.modules.discovery.forEach((d) => modules.discovery.push(d))
}

super(modules, peerInfo, peerBook, options)
}
}

module.exports = Node
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@

const PeerId = require('peer-id')
const PeerInfo = require('peer-info')
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js')
const multiaddr = require('multiaddr')
const Node = require('./libp2p-bundle')
const pull = require('pull-stream')
const series = require('async/series')

Expand All @@ -25,15 +24,14 @@ series([
},
(cb) => {
const listenerPeerInfo = new PeerInfo(listenerId)
listenerPeerInfo.multiaddr.add(multiaddr('/ip4/0.0.0.0/tcp/10333'))
listenerPeerInfo.multiaddr.add('/ip4/0.0.0.0/tcp/10333')
listenerNode = new Node(listenerPeerInfo)

listenerNode.swarm.on('peer-mux-established', (peerInfo) => {
console.log('received dial to me from:', peerInfo.id.toB58String())
})

listenerNode.handle('/echo/1.0.0', (protocol, conn) => pull(conn, conn))

listenerNode.start(cb)
}
], (err) => {
Expand Down
File renamed without changes.
12 changes: 12 additions & 0 deletions examples/see-nodes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# See nodes

> See other nodes in the network using WebRTC Star Discovery

# Try it out

```
# After having run `npm install` at the root of the repo.
> npm install
> npm start
# open your browser in port :9090
```
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "mapper",
"name": "see-nodes",
"version": "0.0.0",
"description": "",
"description": "See other nodes in the network using WebRTC Star discovery mechanism",
"main": "src/index.js",
"scripts": {
"bundle": "browserify src/index.js --require browserify-zlib-next:zlib > public/bundle.js",
"bundle": "browserify src/index.js > public/bundle.js",
"serve": "static public -p 9090 -H '{\"Cache-Control\": \"no-cache, must-revalidate\"}'",
"mon": "nodemon --exec \"npm run start\" --ignore public/bundle.js",
"start": "npm run bundle && npm run serve"
Expand All @@ -13,7 +13,6 @@
"devDependencies": {
"browserify": "^14.0.0",
"browserify-optional": "^1.0.0",
"browserify-zlib-next": "^1.0.1",
"concat-stream": "^1.6.0",
"detect-dom-ready": "^1.0.2",
"node-static": "^0.7.9",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

const PeerInfo = require('peer-info')
const Node = require('../../../../test/browser-bundle/browser-bundle.js')
const Node = require('./libp2p-bundle')

function createNode (callback) {
PeerInfo.create((err, peerInfo) => {
Expand Down
File renamed without changes.
27 changes: 27 additions & 0 deletions examples/see-nodes/src/libp2p-bundle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict'

const WebRTCStar = require('libp2p-webrtc-star')
const multiplex = require('libp2p-multiplex')
const spdy = require('libp2p-spdy')
const secio = require('libp2p-secio')
const libp2p = require('../../..')

class Node extends libp2p {
constructor (peerInfo, peerBook, options) {
options = options || {}
const wstar = new WebRTCStar()

const modules = {
transport: [wstar],
connection: {
muxer: [multiplex, spdy],
crypto: [secio]
},
discovery: [wstar.discovery]
}

super(modules, peerInfo, peerBook, options)
}
}

module.exports = Node