理解metamask的extension-port-stream包
extension-port-stream将浏览器插件上的Runtime.Port对象 转成stream流对象.
继承于readable-stream[1]的Duplex
该库比较简单:
stream实例对象上的_write调用了portInstance.postMessage方法 作为输出
监听portInstance.onMessage.addListener(内部调用了stream.push方法)作为输入
注意
@metamask/post-message-stream中的runtime是对应浏览器插件中的chrome.runtime.sendMessage和chrome.runtime.onMessage.addListener这种适用于一次性发送和接收消息extension-port-stream中是对应portInstance = chrome.runtime.connect中的portInstance.postMessage和portInstance.onMessage.addListener持久的双向通信通道,适用于需要持续交互的场景
- 1.readable-stream是Node.js官方出的库,旨在提供Streams模块的兼容性实现。允许开发者在不同的Node.js版本中使用一致的
StreamsAPI,同时也为浏览器环境提供支持 ↩