-
Notifications
You must be signed in to change notification settings - Fork 451
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: convergence * structure examples
- Loading branch information
Showing
45 changed files
with
2,267 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,13 @@ | ||
### Examples list | ||
# `js-libp2p` Examples and Tutorials | ||
|
||
Here are some examples built with libp2p bundles. | ||
In this folder, you can find a variety of examples to help you get started in using js-libp2p, in Node.js and in the Browser. Every example as a specific purpose and some of each incorporate a full tutorial that you can follow through, helping you expand your knowledge about libp2p and p2p networks in general. | ||
|
||
- https://github.com/ipfs/js-libp2p-ipfs/tree/master/examples/echo | ||
- https://github.com/ipfs/js-libp2p-ipfs/tree/master/examples/chat | ||
Let us know if you find any issue or if you want to contribute and add a new tutorial, feel welcome to submit a PR, thank you! | ||
|
||
## Examples | ||
|
||
- [In Node.js](./nodejs) | ||
- [echo](./nodejs/echo) | ||
- [chat](./nodejs/chat) | ||
- [In the browser](./browser) | ||
- [mapper](./browser/mapper) |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
bundle.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
"name": "mapper", | ||
"version": "0.0.0", | ||
"description": "", | ||
"main": "src/index.js", | ||
"scripts": { | ||
"bundle": "browserify src/index.js --require browserify-zlib-next:zlib > 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" | ||
}, | ||
"license": "MIT", | ||
"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", | ||
"nodemon": "^1.11.0" | ||
}, | ||
"dependencies": {} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<!doctype html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"/> | ||
<title>p2p mapper</title> | ||
</head> | ||
<body> | ||
<h1>p2p mapper</h1> | ||
<div id="my-peer"></div> | ||
<div id="swarm"></div> | ||
|
||
<script src="bundle.js"></script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
'use strict' | ||
|
||
const PeerInfo = require('peer-info') | ||
const Node = require('../../../../test/browser-bundle/browser-bundle.js') | ||
|
||
function createNode (callback) { | ||
PeerInfo.create((err, peerInfo) => { | ||
if (err) { | ||
return callback(err) | ||
} | ||
|
||
const peerIdStr = peerInfo.id.toB58String() | ||
const ma = `/libp2p-webrtc-star/dns4/star-signal.cloud.ipfs.team/wss/ipfs/${peerIdStr}` | ||
|
||
peerInfo.multiaddrs.add(ma) | ||
|
||
const node = new Node(peerInfo, undefined, { webRTCStar: true }) | ||
|
||
node.idStr = peerIdStr | ||
callback(null, node) | ||
}) | ||
} | ||
|
||
module.exports = createNode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
'use strict' | ||
|
||
const domReady = require('detect-dom-ready') | ||
const createNode = require('./create-node') | ||
|
||
domReady(() => { | ||
const myPeerDiv = document.getElementById('my-peer') | ||
const swarmDiv = document.getElementById('swarm') | ||
|
||
createNode((err, node) => { | ||
if (err) { | ||
return console.log('Could not create the Node, check if your browser has WebRTC Support', err) | ||
} | ||
|
||
node.on('peer:discovery', (peerInfo) => { | ||
console.log('Discovered a peer') | ||
const idStr = peerInfo.id.toB58String() | ||
console.log('Discovered: ' + idStr) | ||
|
||
node.dial(peerInfo, (err, conn) => { | ||
if (err) { return console.log('Failed to dial:', idStr) } | ||
}) | ||
}) | ||
|
||
node.on('peer:connect', (peerInfo) => { | ||
const idStr = peerInfo.id.toB58String() | ||
console.log('Got connection to: ' + idStr) | ||
const connDiv = document.createElement('div') | ||
connDiv.innerHTML = 'Connected to: ' + idStr | ||
connDiv.id = idStr | ||
swarmDiv.append(connDiv) | ||
}) | ||
|
||
node.on('peer:disconnect', (peerInfo) => { | ||
const idStr = peerInfo.id.toB58String() | ||
console.log('Lost connection to: ' + idStr) | ||
document.getElementById(idStr).remove() | ||
}) | ||
|
||
node.start((err) => { | ||
if (err) { | ||
return console.log('WebRTC not supported') | ||
} | ||
|
||
const idStr = node.peerInfo.id.toB58String() | ||
|
||
const idDiv = document | ||
.createTextNode('Node is ready. ID: ' + idStr) | ||
|
||
myPeerDiv.append(idDiv) | ||
|
||
console.log('Node is listening o/') | ||
|
||
// NOTE: to stop the node | ||
// node.stop((err) => {}) | ||
}) | ||
}) | ||
}) |
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
'use strict' | ||
/* eslint-disable no-console */ | ||
|
||
const PeerId = require('peer-id') | ||
const PeerInfo = require('peer-info') | ||
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js') | ||
const multiaddr = require('multiaddr') | ||
const pull = require('pull-stream') | ||
const async = require('async') | ||
const Pushable = require('pull-pushable') | ||
const p = Pushable() | ||
let idListener | ||
|
||
async.parallel([ | ||
(callback) => { | ||
PeerId.createFromJSON(require('./peer-id-dialer'), (err, idDialer) => { | ||
if (err) { | ||
throw err | ||
} | ||
callback(null, idDialer) | ||
}) | ||
}, | ||
(callback) => { | ||
PeerId.createFromJSON(require('./peer-id-listener'), (err, idListener) => { | ||
if (err) { | ||
throw err | ||
} | ||
callback(null, idListener) | ||
}) | ||
} | ||
], (err, ids) => { | ||
if (err) throw err | ||
const peerDialer = new PeerInfo(ids[0]) | ||
peerDialer.multiaddr.add(multiaddr('/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')) | ||
nodeDialer.start((err) => { | ||
if (err) { | ||
throw err | ||
} | ||
|
||
console.log('Dialer ready, listening on:') | ||
|
||
peerListener.multiaddrs.forEach((ma) => { | ||
console.log(ma.toString() + '/ipfs/' + idListener.toB58String()) | ||
}) | ||
|
||
nodeDialer.dialByPeerInfo(peerListener, '/chat/1.0.0', (err, conn) => { | ||
if (err) { | ||
throw err | ||
} | ||
console.log('nodeA dialed to nodeB on protocol: /chat/1.0.0') | ||
console.log('Type a message and see what happens') | ||
// Write operation. Data sent as a buffer | ||
pull( | ||
p, | ||
conn | ||
) | ||
// Sink, data converted from buffer to utf8 string | ||
pull( | ||
conn, | ||
pull.map((data) => { | ||
return data.toString('utf8').replace('\n', '') | ||
}), | ||
pull.drain(console.log) | ||
) | ||
|
||
process.stdin.setEncoding('utf8') | ||
process.openStdin().on('data', (chunk) => { | ||
var data = chunk.toString() | ||
p.push(data) | ||
}) | ||
}) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
'use strict' | ||
/* eslint-disable no-console */ | ||
|
||
const PeerId = require('peer-id') | ||
const PeerInfo = require('peer-info') | ||
const Node = require('../../../../test/nodejs-bundle/nodejs-bundle.js') | ||
const multiaddr = require('multiaddr') | ||
const pull = require('pull-stream') | ||
const Pushable = require('pull-pushable') | ||
const p = Pushable() | ||
|
||
PeerId.createFromJSON(require('./peer-id-listener'), (err, idListener) => { | ||
if (err) { | ||
throw err | ||
} | ||
const peerListener = new PeerInfo(idListener) | ||
peerListener.multiaddr.add(multiaddr('/ip4/0.0.0.0/tcp/10333')) | ||
const nodeListener = new Node(peerListener) | ||
|
||
nodeListener.start((err) => { | ||
if (err) { | ||
throw err | ||
} | ||
|
||
nodeListener.swarm.on('peer-mux-established', (peerInfo) => { | ||
console.log(peerInfo.id.toB58String()) | ||
}) | ||
|
||
nodeListener.handle('/chat/1.0.0', (protocol, conn) => { | ||
pull( | ||
p, | ||
conn | ||
) | ||
|
||
pull( | ||
conn, | ||
pull.map((data) => { | ||
return data.toString('utf8').replace('\n', '') | ||
}), | ||
pull.drain(console.log) | ||
) | ||
|
||
process.stdin.setEncoding('utf8') | ||
process.openStdin().on('data', (chunk) => { | ||
var data = chunk.toString() | ||
p.push(data) | ||
}) | ||
}) | ||
|
||
console.log('Listener ready, listening on:') | ||
peerListener.multiaddrs.forEach((ma) => { | ||
console.log(ma.toString() + '/ipfs/' + idListener.toB58String()) | ||
}) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"id": "Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP", | ||
"privKey": "CAASpwkwggSjAgEAAoIBAQCaNSDOjPz6T8HZsf7LDpxiQRiN2OjeyIHUS05p8QWOr3EFUCFsC31R4moihE5HN+FxNalUyyFZU//yjf1pdnlMJqrVByJSMa+y2y4x2FucpoCAO97Tx+iWzwlZ2UXEUXM1Y81mhPbeWXy+wP2xElTgIER0Tsn/thoA0SD2u9wJuVvM7dB7cBcHYmqV6JH+KWCedRTum6O1BssqP/4Lbm2+rkrbZ4+oVRoU2DRLoFhKqwqLtylrbuj4XOI3XykMXV5+uQXz1JzubNOB9lsc6K+eRC+w8hhhDuFMgzkZ4qomCnx3uhO67KaICd8yqqBa6PJ/+fBM5Xk4hjyR40bwcf41AgMBAAECggEAZnrCJ6IYiLyyRdr9SbKXCNDb4YByGYPEi/HT1aHgIJfFE1PSMjxcdytxfyjP4JJpVtPjiT9JFVU2ddoYu5qJN6tGwjVwgJEWg1UXmPaAw1T/drjS94kVsAs82qICtFmwp52Apg3dBZ0Qwq/8qE1XbG7lLyohIbfCBiL0tiPYMfkcsN9gnFT/kFCX0LVs2pa9fHCRMY9rqCc4/rWJa1w8sMuQ23y4lDaxKF9OZVvOHFQkbBDrkquWHE4r55fchCz/rJklkPJUNENuncBRu0/2X+p4IKFD1DnttXNwb8j4LPiSlLro1T0hiUr5gO2QmdYwXFF63Q3mjQy0+5I4eNbjjQKBgQDZvZy3gUKS/nQNkYfq9za80uLbIj/cWbO+ZZjXCsj0fNIcQFJcKMBoA7DjJvu2S/lf86/41YHkPdmrLAEQAkJ+5BBNOycjYK9minTEjIMMmZDTXXugZ62wnU6F46uLkgEChTqEP57Y6xwwV+JaEDFEsW5N1eE9lEVX9nGIr4phMwKBgQC1TazLuEt1WBx/iUT83ita7obXqoKNzwsS/MWfY2innzYZKDOqeSYZzLtt9uTtp4X4uLyPbYs0qFYhXLsUYMoGHNN8+NdjoyxCjQRJRBkMtaNR0lc5lVDWl3bTuJovjFCgAr9uqJrmI5OHcCIk/cDpdWb3nWaMihVlePmiTcTy9wKBgQCU0u7c1jKkudqks4XM6a+2HAYGdUBk4cLjLhnrUWnNAcuyl5wzdX8dGPi8KZb+IKuQE8WBNJ2VXVj7kBYh1QmSJVunDflQSvNYCOaKuOeRoxzD+y9Wkca74qkbBmPn/6FFEb7PSZTO+tPHjyodGNgz9XpJJRjQuBk1aDJtlF3m1QKBgE5SAr5ym65SZOU3UGUIOKRsfDW4Q/OsqDUImvpywCgBICaX9lHDShFFHwau7FA52ScL7vDquoMB4UtCOtLfyQYA9995w9oYCCurrVlVIJkb8jSLcADBHw3EmqF1kq3NqJqm9TmBfoDCh52vdCCUufxgKh33kfBOSlXuf7B8dgMbAoGAZ3r0/mBQX6S+s5+xCETMTSNv7TQzxgtURIpVs+ZVr2cMhWhiv+n0Omab9X9Z50se8cWl5lkvx8vn3D/XHHIPrMF6qk7RAXtvReb+PeitNvm0odqjFv0J2qki6fDs0HKwq4kojAXI1Md8Th0eobNjsy21fEEJT7uKMJdovI/SErI=", | ||
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCaNSDOjPz6T8HZsf7LDpxiQRiN2OjeyIHUS05p8QWOr3EFUCFsC31R4moihE5HN+FxNalUyyFZU//yjf1pdnlMJqrVByJSMa+y2y4x2FucpoCAO97Tx+iWzwlZ2UXEUXM1Y81mhPbeWXy+wP2xElTgIER0Tsn/thoA0SD2u9wJuVvM7dB7cBcHYmqV6JH+KWCedRTum6O1BssqP/4Lbm2+rkrbZ4+oVRoU2DRLoFhKqwqLtylrbuj4XOI3XykMXV5+uQXz1JzubNOB9lsc6K+eRC+w8hhhDuFMgzkZ4qomCnx3uhO67KaICd8yqqBa6PJ/+fBM5Xk4hjyR40bwcf41AgMBAAE=" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"id": "QmcrQZ6RJdpYuGvZqD5QEHAv6qX4BrQLJLQPQUrTrzdcgm", | ||
"privKey": "CAASqAkwggSkAgEAAoIBAQDLZZcGcbe4urMBVlcHgN0fpBymY+xcr14ewvamG70QZODJ1h9sljlExZ7byLiqRB3SjGbfpZ1FweznwNxWtWpjHkQjTVXeoM4EEgDSNO/Cg7KNlU0EJvgPJXeEPycAZX9qASbVJ6EECQ40VR/7+SuSqsdL1hrmG1phpIju+D64gLyWpw9WEALfzMpH5I/KvdYDW3N4g6zOD2mZNp5y1gHeXINHWzMF596O72/6cxwyiXV1eJ000k1NVnUyrPjXtqWdVLRk5IU1LFpoQoXZU5X1hKj1a2qt/lZfH5eOrF/ramHcwhrYYw1txf8JHXWO/bbNnyemTHAvutZpTNrsWATfAgMBAAECggEAQj0obPnVyjxLFZFnsFLgMHDCv9Fk5V5bOYtmxfvcm50us6ye+T8HEYWGUa9RrGmYiLweuJD34gLgwyzE1RwptHPj3tdNsr4NubefOtXwixlWqdNIjKSgPlaGULQ8YF2tm/kaC2rnfifwz0w1qVqhPReO5fypL+0ShyANVD3WN0Fo2ugzrniCXHUpR2sHXSg6K+2+qWdveyjNWog34b7CgpV73Ln96BWae6ElU8PR5AWdMnRaA9ucA+/HWWJIWB3Fb4+6uwlxhu2L50Ckq1gwYZCtGw63q5L4CglmXMfIKnQAuEzazq9T4YxEkp+XDnVZAOgnQGUBYpetlgMmkkh9qQKBgQDvsEs0ThzFLgnhtC2Jy//ZOrOvIAKAZZf/mS08AqWH3L0/Rjm8ZYbLsRcoWU78sl8UFFwAQhMRDBP9G+RPojWVahBL/B7emdKKnFR1NfwKjFdDVaoX5uNvZEKSl9UubbC4WZJ65u/cd5jEnj+w3ir9G8n+P1gp/0yBz02nZXFgSwKBgQDZPQr4HBxZL7Kx7D49ormIlB7CCn2i7mT11Cppn5ifUTrp7DbFJ2t9e8UNk6tgvbENgCKXvXWsmflSo9gmMxeEOD40AgAkO8Pn2R4OYhrwd89dECiKM34HrVNBzGoB5+YsAno6zGvOzLKbNwMG++2iuNXqXTk4uV9GcI8OnU5ZPQKBgCZUGrKSiyc85XeiSGXwqUkjifhHNh8yH8xPwlwGUFIZimnD4RevZI7OEtXw8iCWpX2gg9XGuyXOuKORAkF5vvfVriV4e7c9Ad4Igbj8mQFWz92EpV6NHXGCpuKqRPzXrZrNOA9PPqwSs+s9IxI1dMpk1zhBCOguWx2m+NP79NVhAoGBAI6WSoTfrpu7ewbdkVzTWgQTdLzYNe6jmxDf2ZbKclrf7lNr/+cYIK2Ud5qZunsdBwFdgVcnu/02czeS42TvVBgs8mcgiQc/Uy7yi4/VROlhOnJTEMjlU2umkGc3zLzDgYiRd7jwRDLQmMrYKNyEr02HFKFn3w8kXSzW5I8rISnhAoGBANhchHVtJd3VMYvxNcQb909FiwTnT9kl9pkjhwivx+f8/K8pDfYCjYSBYCfPTM5Pskv5dXzOdnNuCj6Y2H/9m2SsObukBwF0z5Qijgu1DsxvADVIKZ4rzrGb4uSEmM6200qjJ/9U98fVM7rvOraakrhcf9gRwuspguJQnSO9cLj6", | ||
"pubKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLZZcGcbe4urMBVlcHgN0fpBymY+xcr14ewvamG70QZODJ1h9sljlExZ7byLiqRB3SjGbfpZ1FweznwNxWtWpjHkQjTVXeoM4EEgDSNO/Cg7KNlU0EJvgPJXeEPycAZX9qASbVJ6EECQ40VR/7+SuSqsdL1hrmG1phpIju+D64gLyWpw9WEALfzMpH5I/KvdYDW3N4g6zOD2mZNp5y1gHeXINHWzMF596O72/6cxwyiXV1eJ000k1NVnUyrPjXtqWdVLRk5IU1LFpoQoXZU5X1hKj1a2qt/lZfH5eOrF/ramHcwhrYYw1txf8JHXWO/bbNnyemTHAvutZpTNrsWATfAgMBAAE=" | ||
} |
Oops, something went wrong.