Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

FloodSub API discussion #530

Closed
Closed
@haadcode

Description

js-ipfs should expose the (IPFS) pubsub API.

API

UPDATED on 10th November 2016 by @haadcode

Subscribe

ipfs.pubsub.subscribe(topic, options, callback)

topic is type of string.

In the future, topic can also be type of TopicDescriptor (https://github.com/libp2p/pubsub-notes/blob/master/flooding/flooding.proto#L23). However, for now, only strings are supported.

options is an object with subscription options.

Currently the options object is empty, ie. no options are supported, but in the future we'll add any options that can be passed into this argument.

callback signature is (err, stream) where stream is a Stream. stream emits data event upon new message to the specified topic.

If no callback is passed, returns a Promise that resolves to a Stream:

ipfs.pubsub.subscribe(topic, options).then((stream) => ...)

Unsubscribe

ipfs.pubsub.unsubscribe(topic)

topic is type of string.

Publish

ipfs.pubsub.publish(topic, data)

topic is type of string.

data can be a Buffer or anything that converts to a buffer with new Buffer(data).

Usage

ipfs.pubsub.sub('hello', (err, stream) => {
  stream.on('data', (message) => {
    console.log(message)
    stream.cancel() // cancel subscription
    /* {
      data: 'world',
      topicIDs: ['hello']
      // these fields are currently missing from the message
      // (but are present in messages from go-ipfs pubsub)
      // from: bs58.encode(message.from),
      // seqno: Base64.decode(message.seqno)
      } */
  })
})
ipfs.pubsub.sub('hello', 'world')

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions