ipfs-pubsub-1on1
Advanced tools
Comparing version 0.0.7 to 0.0.8
{ | ||
"name": "ipfs-pubsub-1on1", | ||
"version": "0.0.7", | ||
"version": "0.0.8", | ||
"description": "1-to-1 communication channel over IPFS Pubsub between two peers", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -24,2 +24,4 @@ 'use strict' | ||
this._closed = false | ||
this._isClosed = () => this._closed | ||
this._receiverID = receiverID | ||
@@ -50,3 +52,3 @@ | ||
async connect () { | ||
await waitForPeers(this._ipfs, [this._receiverID], this._id) | ||
await waitForPeers(this._ipfs, [this._receiverID], this._id, this._isClosed) | ||
} | ||
@@ -59,2 +61,3 @@ | ||
async send (message) { | ||
if (this._closed) return | ||
let m = encode(message) | ||
@@ -68,2 +71,3 @@ await this._ipfs.pubsub.publish(this._id, m) | ||
close () { | ||
this._closed = true | ||
this.removeAllListeners('message') | ||
@@ -94,2 +98,3 @@ this._ipfs.pubsub.unsubscribe(this._id, this._messageHandler) | ||
async _openChannel () { | ||
this._closed = false | ||
await this._setup() | ||
@@ -96,0 +101,0 @@ await this._ipfs.pubsub.subscribe(this._id, this._messageHandler) |
'use strict' | ||
const waitForPeers = async (ipfs, peersToWait, topic) => { | ||
const waitForPeers = async (ipfs, peersToWait, topic, isClosed) => { | ||
const checkPeers = async () => { | ||
@@ -17,4 +17,6 @@ const peers = await ipfs.pubsub.peers(topic) | ||
try { | ||
if (await checkPeers()) { | ||
if (isClosed()) { | ||
clearInterval(interval) | ||
} else if (await checkPeers()) { | ||
clearInterval(interval) | ||
resolve() | ||
@@ -21,0 +23,0 @@ } |
@@ -197,9 +197,17 @@ 'use strict' | ||
return new Promise(async (resolve, reject) => { | ||
assert.equal(c1._closed, false) | ||
assert.equal(c1._isClosed(), false) | ||
c1.close() | ||
const topics1 = await ipfs1.pubsub.ls() | ||
assert.deepEqual(topics1, []) | ||
assert.equal(c1._closed, true) | ||
assert.equal(c1._isClosed(), true) | ||
assert.equal(c2._closed, false) | ||
assert.equal(c2._isClosed(), false) | ||
c2.close() | ||
const topics2 = await ipfs2.pubsub.ls() | ||
assert.deepEqual(topics1, []) | ||
assert.equal(c2._closed, true) | ||
assert.equal(c2._isClosed(), true) | ||
@@ -257,3 +265,3 @@ setTimeout(async () => { | ||
describe('non-participant peers can\'t send messages', function() { | ||
it('doesn\'t receive unwated messages', async () => { | ||
it('doesn\'t receive unwanted messages', async () => { | ||
const c1 = await Channel.open(ipfs1, id2) | ||
@@ -274,3 +282,3 @@ const c2 = await Channel.open(ipfs2, id1) | ||
await ipfs3.pubsub.subscribe(c1.id, () => {}) | ||
await waitForPeers(ipfs1, [id3], c1.id) | ||
await waitForPeers(ipfs1, [id3], c1.id, c1._isClosed.bind(c1)) | ||
await ipfs3.pubsub.publish(c1.id, Buffer.from('OMG!')) | ||
@@ -277,0 +285,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
13890
381