mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-07-10 22:31:34 +00:00
Compare commits
1 Commits
refactor-a
...
chore/cust
Author | SHA1 | Date | |
---|---|---|---|
43147f4245 |
1
examples/libp2p-in-the-browser/libp2p-dialer/.gitignore
vendored
Normal file
1
examples/libp2p-in-the-browser/libp2p-dialer/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
bundle.js
|
29
examples/libp2p-in-the-browser/libp2p-dialer/package.json
Normal file
29
examples/libp2p-in-the-browser/libp2p-dialer/package.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "libp2p-in-the-browser",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "See other nodes in the network using WebRTC Star discovery mechanism",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"bundle": "browserify src/index.js > public/bundle.js",
|
||||||
|
"serve": "static public -p 9091 -H '{\"Cache-Control\": \"no-cache, must-revalidate\"}'",
|
||||||
|
"start": "npm run bundle && npm run serve"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"browserify": "^14.5.0",
|
||||||
|
"concat-stream": "^1.6.0",
|
||||||
|
"detect-dom-ready": "^1.0.2",
|
||||||
|
"node-static": "~0.7.10"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"detect-dom-ready": "^1.0.2",
|
||||||
|
"libp2p-bootstrap": "~0.9.7",
|
||||||
|
"libp2p-mplex": "~0.8.5",
|
||||||
|
"libp2p-secio": "~0.11.1",
|
||||||
|
"libp2p-spdy": "~0.13.3",
|
||||||
|
"libp2p-webrtc-star": "~0.15.8",
|
||||||
|
"libp2p-websocket-star": "~0.10.2",
|
||||||
|
"libp2p-websockets": "~0.12.2",
|
||||||
|
"peer-info": "~0.15.1"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8"/>
|
||||||
|
<title>libp2p in the browser</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>my libp2p node is also running \o/</h1>
|
||||||
|
<div id="my-peer" style="font-size: 37px"></div>
|
||||||
|
</br>
|
||||||
|
<p>___</p>
|
||||||
|
<div id="swarm">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="bundle.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,57 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const WebSockets = require('libp2p-websockets')
|
||||||
|
const WebSocketStar = require('libp2p-websocket-star')
|
||||||
|
const Mplex = require('libp2p-mplex')
|
||||||
|
const SPDY = require('libp2p-spdy')
|
||||||
|
const SECIO = require('libp2p-secio')
|
||||||
|
const defaultsDeep = require('@nodeutils/defaults-deep')
|
||||||
|
const libp2p = require('../../../../')
|
||||||
|
|
||||||
|
class Node extends libp2p {
|
||||||
|
constructor (_options) {
|
||||||
|
const wsstar = new WebSocketStar({ id: _options.peerInfo.id })
|
||||||
|
|
||||||
|
const defaults = {
|
||||||
|
modules: {
|
||||||
|
transport: [
|
||||||
|
WebSockets,
|
||||||
|
wsstar
|
||||||
|
],
|
||||||
|
streamMuxer: [
|
||||||
|
Mplex,
|
||||||
|
SPDY
|
||||||
|
],
|
||||||
|
connEncryption: [
|
||||||
|
SECIO
|
||||||
|
],
|
||||||
|
peerDiscovery: [
|
||||||
|
wsstar.discovery
|
||||||
|
]
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
peerDiscovery: {
|
||||||
|
autoDial: true,
|
||||||
|
websocketStar: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
relay: {
|
||||||
|
enabled: true,
|
||||||
|
hop: {
|
||||||
|
enabled: false,
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
connectionManager: {
|
||||||
|
minPeers: 10,
|
||||||
|
maxPeers: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super(defaultsDeep(_options, defaults))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Node
|
@ -0,0 +1,27 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const PeerInfo = require('peer-info')
|
||||||
|
const Node = require('./browser-bundle')
|
||||||
|
|
||||||
|
function createNode (callback) {
|
||||||
|
PeerInfo.create((err, peerInfo) => {
|
||||||
|
if (err) {
|
||||||
|
return callback(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
const peerIdStr = peerInfo.id.toB58String()
|
||||||
|
// const ma = `/dns4/star-signal.cloud.ipfs.team/tcp/443/wss/p2p-webrtc-star/p2p/${peerIdStr}`
|
||||||
|
const ma = `/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star/p2p/${peerIdStr}`
|
||||||
|
|
||||||
|
peerInfo.multiaddrs.add(ma)
|
||||||
|
|
||||||
|
const node = new Node({
|
||||||
|
peerInfo
|
||||||
|
})
|
||||||
|
|
||||||
|
node.idStr = peerIdStr
|
||||||
|
callback(null, node)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createNode
|
101
examples/libp2p-in-the-browser/libp2p-dialer/src/index.js
Normal file
101
examples/libp2p-in-the-browser/libp2p-dialer/src/index.js
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/* eslint no-console: ["error", { allow: ["log"] }] */
|
||||||
|
/* eslint max-nested-callbacks: ["error", 5] */
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const domReady = require('detect-dom-ready')
|
||||||
|
const createNode = require('./create-node')
|
||||||
|
|
||||||
|
const PeerInfo = require('peer-info')
|
||||||
|
const PeerId = require('peer-id')
|
||||||
|
|
||||||
|
const peerIdDialer = {
|
||||||
|
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="
|
||||||
|
}
|
||||||
|
|
||||||
|
const commonPeers = [
|
||||||
|
'QmPeEGJUikzoZcrUDRLms7RePt6zG7HBWDDQZSNXZKAhHt',
|
||||||
|
'QmUxxcryRTJaM8H7Cqh2qAL4YqprTQYrxhg3Jkbf7Lfius',
|
||||||
|
'QmRtryPuULa74dG2Navgw6c26U1jLyXMEU6JQegiXWKCSz',
|
||||||
|
'QmUfLzeaJdDNXKsdHrYKE37gkxySfgLiCC1HPhsKNTWH5L',
|
||||||
|
'QmQSdqeBA8UvqBXTC5JLkBrBgPgg9xkAtoFyFZSEHJtDfC',
|
||||||
|
'Qmdp2yQDyJVqzLN2AH1V6p6X5hXQSHK68u7Gs9UrFbXCED',
|
||||||
|
'QmU6Ta9CC7naQQyQwXRp4s4xKWhtufNq46fK9RWBREAuvS',
|
||||||
|
'QmVddtFXfhf4BHYU6DLCBg4J5BXG4V262V3VxNTn3VKsHE',
|
||||||
|
'QmVuEoK4MjCGkMJYsCg2a7wn6BLGekPF47jsszkEHaaD13',
|
||||||
|
'QmWpzaFNiezm4BKvXe3XxqAebpXh7irxDzJNMbmmNdyCQG',
|
||||||
|
'QmVuEoK4MjCGkMJYsCg2a7wn6BLGekPF47jsszkEHaaD13',
|
||||||
|
]
|
||||||
|
|
||||||
|
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:connect', (peerInfo) => {
|
||||||
|
const idStr = peerInfo.id.toB58String()
|
||||||
|
|
||||||
|
if (commonPeers.indexOf(idStr) === -1) {
|
||||||
|
console.log('You are now connected with: ' + idStr)
|
||||||
|
|
||||||
|
if (idStr === 'Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP') {
|
||||||
|
const connDiv = document.createElement('div')
|
||||||
|
connDiv.innerHTML = 'Wat! You are connected to: ' + idStr
|
||||||
|
connDiv.id = idStr
|
||||||
|
connDiv.setAttribute('style', 'color: green')
|
||||||
|
swarmDiv.append(connDiv)
|
||||||
|
} else {
|
||||||
|
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()
|
||||||
|
|
||||||
|
if (idStr === 'Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP') {
|
||||||
|
const el = document.getElementById(idStr)
|
||||||
|
el && el.remove()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
node.start((err) => {
|
||||||
|
if (err) {
|
||||||
|
return console.log(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
const idStr = node.peerInfo.id.toB58String()
|
||||||
|
|
||||||
|
const idDiv = document
|
||||||
|
.createTextNode('Node is ready. ID: ' + idStr + '\n\n\n')
|
||||||
|
|
||||||
|
myPeerDiv.append(idDiv)
|
||||||
|
|
||||||
|
console.log('Node is listening o/')
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
PeerId.createFromJSON(peerIdDialer, (err, peerId) => {
|
||||||
|
const peerInfo = new PeerInfo(peerId)
|
||||||
|
const ma = `/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star/p2p/${peerId.toB58String()}`
|
||||||
|
|
||||||
|
peerInfo.multiaddrs.add(ma)
|
||||||
|
|
||||||
|
node.dial(peerInfo, (err) => {
|
||||||
|
console.log('dialed listener', err)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 4000)
|
||||||
|
|
||||||
|
// NOTE: to stop the node
|
||||||
|
// node.stop((err) => {})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
1
examples/libp2p-in-the-browser/libp2p-listener/.gitignore
vendored
Normal file
1
examples/libp2p-in-the-browser/libp2p-listener/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
bundle.js
|
29
examples/libp2p-in-the-browser/libp2p-listener/package.json
Normal file
29
examples/libp2p-in-the-browser/libp2p-listener/package.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "libp2p-in-the-browser",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "See other nodes in the network using WebRTC Star discovery mechanism",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"bundle": "browserify src/index.js > public/bundle.js",
|
||||||
|
"serve": "static public -p 9090 -H '{\"Cache-Control\": \"no-cache, must-revalidate\"}'",
|
||||||
|
"start": "npm run bundle && npm run serve"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"browserify": "^14.5.0",
|
||||||
|
"concat-stream": "^1.6.0",
|
||||||
|
"detect-dom-ready": "^1.0.2",
|
||||||
|
"node-static": "~0.7.10"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"detect-dom-ready": "^1.0.2",
|
||||||
|
"libp2p-bootstrap": "~0.9.7",
|
||||||
|
"libp2p-mplex": "~0.8.5",
|
||||||
|
"libp2p-secio": "~0.11.1",
|
||||||
|
"libp2p-spdy": "~0.13.3",
|
||||||
|
"libp2p-webrtc-star": "~0.15.8",
|
||||||
|
"libp2p-websocket-star": "~0.10.2",
|
||||||
|
"libp2p-websockets": "~0.12.2",
|
||||||
|
"peer-info": "~0.15.1"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8"/>
|
||||||
|
<title>libp2p in the browser</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>libp2p node running \o/</h1>
|
||||||
|
<div id="my-peer"></div>
|
||||||
|
<img
|
||||||
|
src="http://api.qrserver.com/v1/create-qr-code/?color=000000&bgcolor=FFFFFF&data=https%3A%2F%2Fpublic.vascosantos.now.sh&qzone=1&margin=0&size=400x400&ecc=L"
|
||||||
|
alt="qr code" />
|
||||||
|
<div id="swarm"></div>
|
||||||
|
|
||||||
|
<script src="bundle.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,57 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const WebSockets = require('libp2p-websockets')
|
||||||
|
const WebSocketStar = require('libp2p-websocket-star')
|
||||||
|
const Mplex = require('libp2p-mplex')
|
||||||
|
const SPDY = require('libp2p-spdy')
|
||||||
|
const SECIO = require('libp2p-secio')
|
||||||
|
const defaultsDeep = require('@nodeutils/defaults-deep')
|
||||||
|
const libp2p = require('../../../../')
|
||||||
|
|
||||||
|
class Node extends libp2p {
|
||||||
|
constructor (_options) {
|
||||||
|
const wsstar = new WebSocketStar({ id: _options.peerInfo.id })
|
||||||
|
|
||||||
|
const defaults = {
|
||||||
|
modules: {
|
||||||
|
transport: [
|
||||||
|
WebSockets,
|
||||||
|
wsstar
|
||||||
|
],
|
||||||
|
streamMuxer: [
|
||||||
|
Mplex,
|
||||||
|
SPDY
|
||||||
|
],
|
||||||
|
connEncryption: [
|
||||||
|
SECIO
|
||||||
|
],
|
||||||
|
peerDiscovery: [
|
||||||
|
wsstar.discovery
|
||||||
|
]
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
peerDiscovery: {
|
||||||
|
autoDial: true,
|
||||||
|
websocketStar: {
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
relay: {
|
||||||
|
enabled: true,
|
||||||
|
hop: {
|
||||||
|
enabled: false,
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
connectionManager: {
|
||||||
|
minPeers: 10,
|
||||||
|
maxPeers: 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super(defaultsDeep(_options, defaults))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Node
|
@ -0,0 +1,34 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const PeerInfo = require('peer-info')
|
||||||
|
const PeerId = require('peer-id')
|
||||||
|
const Node = require('./browser-bundle')
|
||||||
|
|
||||||
|
const peerIdDialer = {
|
||||||
|
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="
|
||||||
|
}
|
||||||
|
|
||||||
|
function createNode (callback) {
|
||||||
|
PeerId.createFromJSON(peerIdDialer, (err, peerId) => {
|
||||||
|
if (err) {
|
||||||
|
return callback(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
const peerInfo = new PeerInfo(peerId)
|
||||||
|
const peerIdStr = peerInfo.id.toB58String()
|
||||||
|
const ma = `/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star/p2p/${peerId.toB58String()}`
|
||||||
|
|
||||||
|
peerInfo.multiaddrs.add(ma)
|
||||||
|
|
||||||
|
const node = new Node({
|
||||||
|
peerInfo
|
||||||
|
})
|
||||||
|
|
||||||
|
node.idStr = peerIdStr
|
||||||
|
callback(null, node)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createNode
|
74
examples/libp2p-in-the-browser/libp2p-listener/src/index.js
Normal file
74
examples/libp2p-in-the-browser/libp2p-listener/src/index.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/* eslint no-console: ["error", { allow: ["log"] }] */
|
||||||
|
/* eslint max-nested-callbacks: ["error", 5] */
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const domReady = require('detect-dom-ready')
|
||||||
|
const createNode = require('./create-node')
|
||||||
|
|
||||||
|
const commonPeers = [
|
||||||
|
'QmPeEGJUikzoZcrUDRLms7RePt6zG7HBWDDQZSNXZKAhHt',
|
||||||
|
'QmUxxcryRTJaM8H7Cqh2qAL4YqprTQYrxhg3Jkbf7Lfius',
|
||||||
|
'QmRtryPuULa74dG2Navgw6c26U1jLyXMEU6JQegiXWKCSz',
|
||||||
|
'QmUfLzeaJdDNXKsdHrYKE37gkxySfgLiCC1HPhsKNTWH5L',
|
||||||
|
'QmQSdqeBA8UvqBXTC5JLkBrBgPgg9xkAtoFyFZSEHJtDfC',
|
||||||
|
'Qmdp2yQDyJVqzLN2AH1V6p6X5hXQSHK68u7Gs9UrFbXCED',
|
||||||
|
'QmU6Ta9CC7naQQyQwXRp4s4xKWhtufNq46fK9RWBREAuvS',
|
||||||
|
'QmVddtFXfhf4BHYU6DLCBg4J5BXG4V262V3VxNTn3VKsHE',
|
||||||
|
'QmVuEoK4MjCGkMJYsCg2a7wn6BLGekPF47jsszkEHaaD13',
|
||||||
|
'QmWpzaFNiezm4BKvXe3XxqAebpXh7irxDzJNMbmmNdyCQG',
|
||||||
|
'QmVuEoK4MjCGkMJYsCg2a7wn6BLGekPF47jsszkEHaaD13',
|
||||||
|
]
|
||||||
|
|
||||||
|
let time
|
||||||
|
|
||||||
|
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:', peerInfo.id.toB58String())
|
||||||
|
})
|
||||||
|
|
||||||
|
node.on('peer:connect', (peerInfo) => {
|
||||||
|
const idStr = peerInfo.id.toB58String()
|
||||||
|
|
||||||
|
if (commonPeers.indexOf(idStr) === -1) {
|
||||||
|
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()
|
||||||
|
const el = document.getElementById(idStr)
|
||||||
|
el && el.remove()
|
||||||
|
})
|
||||||
|
|
||||||
|
node.start((err) => {
|
||||||
|
if (err) {
|
||||||
|
return console.log(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
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) => {})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
Reference in New Issue
Block a user