mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-07-08 13:21:34 +00:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
babb90fe17 | |||
2f9070a725 | |||
a48ec65961 | |||
031ecb3fe7 | |||
c6bdd869be | |||
dee0340806 | |||
a4b41b0f9a | |||
291e79fc99 | |||
59ea9c388f | |||
300936f2f3 | |||
9f4ec2a915 | |||
c7f4368007 | |||
9ff04779f5 | |||
f73c045767 | |||
8840c9b250 | |||
df4c99df4a | |||
6e05a0b239 | |||
c781abc30c | |||
6a66931ba4 | |||
426fc27b26 | |||
d6325dee90 |
38
CHANGELOG.md
38
CHANGELOG.md
@ -1,3 +1,41 @@
|
||||
<a name="0.8.0"></a>
|
||||
# [0.8.0](https://github.com/libp2p/js-libp2p/compare/v0.7.0...v0.8.0) (2017-03-31)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* addition of ipfs id appendix must come before transport filtering ([291e79f](https://github.com/libp2p/js-libp2p/commit/291e79f))
|
||||
* avoid deleting nodes from peerBook ([300936f](https://github.com/libp2p/js-libp2p/commit/300936f))
|
||||
* correct method on peer-book ([031ecb3](https://github.com/libp2p/js-libp2p/commit/031ecb3))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* append peer id to multiaddr if not there ([59ea9c3](https://github.com/libp2p/js-libp2p/commit/59ea9c3))
|
||||
* not remove peer from peerBook on disconnect ([a4b41b0](https://github.com/libp2p/js-libp2p/commit/a4b41b0))
|
||||
|
||||
|
||||
|
||||
<a name="0.7.0"></a>
|
||||
# [0.7.0](https://github.com/libp2p/js-libp2p/compare/v0.6.2...v0.7.0) (2017-03-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* update events to conform with [#74](https://github.com/libp2p/js-libp2p/issues/74) ([f73c045](https://github.com/libp2p/js-libp2p/commit/f73c045))
|
||||
|
||||
|
||||
|
||||
<a name="0.6.2"></a>
|
||||
## [0.6.2](https://github.com/libp2p/js-libp2p/compare/v0.6.1...v0.6.2) (2017-03-28)
|
||||
|
||||
|
||||
|
||||
<a name="0.6.1"></a>
|
||||
## [0.6.1](https://github.com/libp2p/js-libp2p/compare/v0.6.0...v0.6.1) (2017-03-27)
|
||||
|
||||
|
||||
|
||||
<a name="0.6.0"></a>
|
||||
# [0.6.0](https://github.com/libp2p/js-libp2p/compare/v0.5.5...v0.6.0) (2017-03-27)
|
||||
|
||||
|
14
README.md
14
README.md
@ -158,12 +158,24 @@ class Node extends libp2p {
|
||||
|
||||
- `protocol`: String that defines the protocol (e.g '/ipfs/bitswap/1.1.0')
|
||||
|
||||
#### `libp2p.on('peer', (peer) => {})`
|
||||
#### `libp2p.on('peer:discovery', (peer) => {})`
|
||||
|
||||
> Peer has been discovered.
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.on('peer:connect', (peer) => {})`
|
||||
|
||||
> We connected to a new peer
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.on('peer:disconnect', (peer) => {})`
|
||||
|
||||
> We disconnected from Peer
|
||||
|
||||
- `peer`: instance of [PeerInfo][]
|
||||
|
||||
#### `libp2p.isOn()`
|
||||
|
||||
> Check if libp2p is started
|
||||
|
13
package.json
13
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "libp2p",
|
||||
"version": "0.6.0",
|
||||
"version": "0.8.0",
|
||||
"description": "JavaScript Skeleton for libp2p bundles",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
@ -41,11 +41,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"libp2p-ping": "~0.3.2",
|
||||
"libp2p-swarm": "~0.26.19",
|
||||
"multiaddr": "^2.2.3",
|
||||
"peer-book": "~0.3.2",
|
||||
"peer-id": "~0.8.5",
|
||||
"peer-info": "~0.8.5"
|
||||
"libp2p-swarm": "~0.29.0",
|
||||
"mafmt": "^2.1.8",
|
||||
"multiaddr": "^2.3.0",
|
||||
"peer-book": "~0.4.0",
|
||||
"peer-id": "~0.8.6",
|
||||
"peer-info": "~0.9.2"
|
||||
},
|
||||
"contributors": [
|
||||
"David Dias <daviddias.p@gmail.com>",
|
||||
|
42
src/index.js
42
src/index.js
@ -3,6 +3,7 @@
|
||||
const Swarm = require('libp2p-swarm')
|
||||
const PeerId = require('peer-id')
|
||||
const PeerInfo = require('peer-info')
|
||||
const mafmt = require('mafmt')
|
||||
const PeerBook = require('peer-book')
|
||||
const multiaddr = require('multiaddr')
|
||||
const EventEmitter = require('events').EventEmitter
|
||||
@ -25,7 +26,7 @@ class Node extends EventEmitter {
|
||||
this.peerBook = _peerBook || new PeerBook()
|
||||
this.isOnline = false
|
||||
|
||||
this.swarm = new Swarm(this.peerInfo)
|
||||
this.swarm = new Swarm(this.peerInfo, this.peerBook)
|
||||
|
||||
// Attach stream multiplexers
|
||||
if (this.modules.connection.muxer) {
|
||||
@ -38,14 +39,15 @@ class Node extends EventEmitter {
|
||||
// If muxer exists, we can use Identify
|
||||
this.swarm.connection.reuse()
|
||||
|
||||
// Received incommind dial and muxer upgrade happened, reuse this
|
||||
// muxed connection
|
||||
// Received incommind dial and muxer upgrade happened,
|
||||
// reuse this muxed connection
|
||||
this.swarm.on('peer-mux-established', (peerInfo) => {
|
||||
this.emit('peer:connect', peerInfo)
|
||||
this.peerBook.put(peerInfo)
|
||||
})
|
||||
|
||||
this.swarm.on('peer-mux-closed', (peerInfo) => {
|
||||
this.peerBook.removeByB58String(peerInfo.id.toB58String())
|
||||
this.emit('peer:disconnect', peerInfo)
|
||||
})
|
||||
}
|
||||
|
||||
@ -62,8 +64,9 @@ class Node extends EventEmitter {
|
||||
if (this.modules.discovery) {
|
||||
let discoveries = this.modules.discovery
|
||||
discoveries = Array.isArray(discoveries) ? discoveries : [discoveries]
|
||||
|
||||
discoveries.forEach((discovery) => {
|
||||
discovery.on('peer', (peerInfo) => this.emit('peer', peerInfo))
|
||||
discovery.on('peer', (peerInfo) => this.emit('peer:discovery', peerInfo))
|
||||
})
|
||||
}
|
||||
|
||||
@ -88,7 +91,19 @@ class Node extends EventEmitter {
|
||||
let transports = this.modules.transport
|
||||
|
||||
transports = Array.isArray(transports) ? transports : [transports]
|
||||
const multiaddrs = this.peerInfo.multiaddrs
|
||||
|
||||
// so that we can have webrtc-star addrs without adding manually the id
|
||||
const maOld = []
|
||||
const maNew = []
|
||||
this.peerInfo.multiaddrs.forEach((ma) => {
|
||||
if (!mafmt.IPFS.matches(ma)) {
|
||||
maOld.push(ma)
|
||||
maNew.push(ma.encapsulate('/ipfs/' + this.peerInfo.id.toB58String()))
|
||||
}
|
||||
})
|
||||
this.peerInfo.multiaddrs.replace(maOld, maNew)
|
||||
|
||||
const multiaddrs = this.peerInfo.multiaddrs.toArray()
|
||||
|
||||
transports.forEach((transport) => {
|
||||
if (transport.filter(multiaddrs).length > 0) {
|
||||
@ -149,13 +164,19 @@ class Node extends EventEmitter {
|
||||
|
||||
dial (peer, protocol, callback) {
|
||||
assert(this.isOn(), OFFLINE_ERROR_MESSAGE)
|
||||
const peerInfo = this._getPeerInfo(peer)
|
||||
|
||||
if (typeof protocol === 'function') {
|
||||
callback = protocol
|
||||
protocol = undefined
|
||||
}
|
||||
|
||||
let peerInfo
|
||||
try {
|
||||
peerInfo = this._getPeerInfo(peer)
|
||||
} catch (err) {
|
||||
return callback(err)
|
||||
}
|
||||
|
||||
this.swarm.dial(peerInfo, protocol, (err, conn) => {
|
||||
if (err) {
|
||||
return callback(err)
|
||||
@ -169,7 +190,6 @@ class Node extends EventEmitter {
|
||||
assert(this.isOn(), OFFLINE_ERROR_MESSAGE)
|
||||
const peerInfo = this._getPeerInfo(peer)
|
||||
|
||||
this.peerBook.removeByB58String(peerInfo.id.toB58String())
|
||||
this.swarm.hangUp(peerInfo, callback)
|
||||
}
|
||||
|
||||
@ -191,15 +211,15 @@ class Node extends EventEmitter {
|
||||
} else if (multiaddr.isMultiaddr(peer)) {
|
||||
const peerIdB58Str = peer.getPeerId()
|
||||
try {
|
||||
p = this.peerBook.getByB58String(peerIdB58Str)
|
||||
p = this.peerBook.get(peerIdB58Str)
|
||||
} catch (err) {
|
||||
p = new PeerInfo(PeerId.createFromB58String(peerIdB58Str))
|
||||
}
|
||||
p.multiaddr.add(peer)
|
||||
p.multiaddrs.add(peer)
|
||||
} else if (PeerId.isPeerId(peer)) {
|
||||
const peerIdB58Str = peer.toB58String()
|
||||
try {
|
||||
p = this.peerBook.getByB58String(peerIdB58Str)
|
||||
p = this.peerBook.get(peerIdB58Str)
|
||||
} catch (err) {
|
||||
// TODO this is where PeerRouting comes into place
|
||||
throw new Error('No knowledge about: ' + peerIdB58Str)
|
||||
|
Reference in New Issue
Block a user