Files
bilibili-subtitle/src/messaging/README.md
2024-10-04 13:15:27 +08:00

40 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 消息通信库封装
### 消息端
一共分3个端
1. 扩展端(`background.ts`):扩展后台服务,整个浏览器最多一个实例。
2. 注入端(`inject.ts`会注入到网页中运行可以访问网页元素每个网页可能n个实例看注入的次数但多个实例一般是不必要的所以尽量控制。
3. 应用端(`App.tsx`会放入iframe中然后iframe元素添加到网页上每个iframe一个实例或者options.html选项页面也是应用实例。
### 消息通信
通信分为6个方向
1. 扩展端 --> 注入端:
1. 监听:`chrome.runtime.onMessage.addListener`
2. 发送:`chrome.tabs.sendMessage`
2. 扩展端 --> 应用端:
1. 监听:`chrome.runtime.onMessage.addListener`
2. 发送:`chrome.tabs.sendMessage`
3. 注入端 --> 扩展端
1. 监听:`chrome.runtime.onMessage.addListener`
2. 发送:`chrome.runtime.sendMessage`
4. 注入端 --> 应用端
1. 监听:`postmessage-promise`
2. 发送:`postmessage-promise`
5. 应用端 --> 注入端
1. 监听:`postmessage-promise`
2. 发送:`postmessage-promise`
6. 应用端 --> 扩展端
1. 监听:`chrome.runtime.onMessage.addListener`
2. 发送:`chrome.runtime.sendMessage`
### 通信实现方式
1. 浏览器扩展接口:对于注入端与应用端,可以用这种方式与扩展端互相通信。
1. `chrome.runtime.onMessage.addListener`
2. `chrome.runtime.sendMessage`
3. `chrome.tabs.sendMessage`
2. `postmessage-promise`库:应用端跟注入端双向通信用这个第三方库。
### 说明
1. `chrome.tabs.sendMessage`这个方法是向标签页发送信息,标签页内的所有`注入端``应用端`都会收到信息。
2. `chrome.runtime.sendMessage`这个方法是向扩展端发送信息
3. `chrome.runtime.onMessage.addListener`这个监听器三个端都能放。