IPFS pubsub功能的使用

什么是 pubsub?
发布订阅模式(Publish–subscribe pattern),最早是由苹果公司在 Mac OS 引入。

消息的发送者(publishers)不直接将消息发送给接收者(subscriber)。而是将消息分门别类,发送者并不知道也无需知道接收者的存在。而接收者只需要订阅一个或者多个类别的消息类,只接收感兴趣的消息,不知道也无需知道发布者的存在。(https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)

写代码的朋友对于观察者模式(Observer)并不陌生。这个有些类似软件设计模式里面的观察者模式(Observer)。但是并不完全相同。pubsub比Observer更加的松耦合。这里不再详细对比二者的区别。有兴趣的朋友自行Google一下。

pubsub功能目前还属于ipfs的一个实验性质的功能,如果要开启pubsub功能,在启动ipfs daempon的时候需要指定参数: --enable-pubsub-experiment。

下面我们使用具体例子来说明ipfs pubsub 如何使用?

  1. 搭建两个IPFS节点A和B
    如果还不知道节点如何搭建,参见之前的文章《如何在IPFS网络里面上传一张图片》。

A(小编本地节点):

IPFS节点ID: QmTrRNgt6M9syRq8ZqM4o92Fgh6avK8v862n2QZLyDPywY

IPFS地址:192.168.162.129(保护隐私,没有使用公网IP)

B(亚马逊aws):

IPFS地址:13.231.198.154

IPFS节点地址; /ip4/13.231.198.154/tcp/4001/ipfs/QmXL2h6Y51BHZMaypzjCnNc1MiVk2H5EZJxWgAuRkLanaK

  1. 启动节点B
    ipfs daemon --enable-pubsub-experiment
    (注意这里需要使用参数 --enable-pubsub-experiment)

  2. 为了快速演示,将节点A和B直连
    删除节点A的全部bootstrap地址

ipfs bootstrap rm all

在A节点添加B节点为bootstrap节点

ipfs bootstrap add /ip4/13.231.198.154/tcp/4001/ipfs/QmXL2h6Y51BHZMaypzjCnNc1MiVk2H5EZJxWgAuRkLanaK

  1. 启动节点A
    ipfs daemon --enable-pubsub-experiment

(注意这里需要使用参数 --enable-pubsub-experiment)

  1. pubsub功能使用
    在A节点上新开一个命令行,执行

ipfs pubsub sub flytofuture

这句的意思是我们在节点A订阅了消息主题:flytofuture。凡是发往这个消息主题的消息都会被A节点接收到。

在这里插入图片描述
我们在B节点对消息主题 flytofuture发送消息
在这里插入图片描述
ipfs pubsub pub flytofuture “hello, IPFS指南,飞向未来!”

这个时候我们就可以在A节点的命令行看到消息输出:hello, IPFS指南,飞向未来!

两个跨越了不同网络,不同地域的IPFS节点进行pubsub功能的通信。

实际上,pubsub功能不仅仅之只限于两个直连的节点之间,还可以通过中间节点进行中转。

例如:有A,B,C三个节点,A链接到B,B连接到C,A与C并不直接连接。那么A仍然可以订阅收到来自于C的消息。这对于一些复杂的网络环境里面非常有用,比如在一些NAT不太友好的网络环境。

pubsub相关的命令使用和功能
pubsub相关的命令使用:

ipfs pubsub ls – 列出来本节点订阅的全部主题
ipfs pubsub peers – 列出来与本节点相连接的开通pubsub功能的节点
ipfs pubsub pub – 发布数据到相应的主题
ipfs pubsub sub – 订阅主题
pubsub功能有很多用途,广大开发者可以开脑洞基于这样的功能构建出来自己的应用。
目前IPFS上有两个标杆应用是基于pubsub功能进行搭建的。

orbit-db: 分布式数据库
Orbit: 点对点的聊天工具

在Vue3中使用pubsub可以按照以下步骤进行: 1. 首先,在App.vue文件中引入pubsub库,并进行订阅消息。可以在以下代码中看到具体的实现: ```javascript import PubSub from 'pubsub-js' // ... this.PubSub.subscribe("msg", (msg, data) => { // 接收到消息后的处理逻辑 }) ``` 2. 其次,你需要安装pubsub.js库。可以通过在终端中运行以下命令来安装它: ```bash npm install pubsub-js --save ``` 3. 在Main.js中执行以下代码来将PubSub库引入到Vue的原型中,以便在整个应用程序中都可以使用它: ```javascript import PubSub from 'pubsub-js' Vue.prototype.PubSub = PubSub ``` 4. 发布消息:使用以下代码来发布消息,其中"要发送的消息"是你要发送的具体消息内容: ```javascript this.PubSub.publish("msg", "要发送的消息") ``` 5. 订阅消息:使用以下代码来订阅消息,其中"msg"是必须要写的,你可以使用data来接收需要的数据: ```javascript this.PubSub.subscribe("msg", (msg, data) => { // 接收到消息后的处理逻辑 }) ``` 6. 取消订阅:如果想要取消特定的订阅,可以使用以下代码取消: ```javascript this.PubSub.unsubscribe(subscription) ``` 以上就是使用vue3pubsub的基本步骤,你可以根据需要在代码中进行具体的实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue3 _ 20. Vue 多组件沟通 - Pubsub 消息组件](https://blog.csdn.net/weixin_45908370/article/details/118905153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [一、PubSub 的Vue使用方式](https://blog.csdn.net/weixin_52834606/article/details/124636609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值