2
2
3
3
[ ![ Build Status] ( https://github.com/iceprosurface/remote-async/actions/workflows/merge.yml/badge.svg )] ( https://github.com/iceprosurface/remote-async/actions/workflows/merge.yml ) [ ![ codecov] ( https://codecov.io/gh/iceprosurface/remote-async/branch/master/graph/badge.svg )] ( https://codecov.io/gh/iceprosurface/remote-async )
4
4
5
- ## install
5
+ ## Installation
6
6
7
7
```
8
- # npm
8
+ # Using npm
9
9
npm i remote-async
10
- # yarn
10
+ # Using yarn
11
11
yarn add remote-async
12
+ # Using pnpm
13
+ pnpm add remote-async
12
14
```
13
15
14
- ## why
16
+ ## Why use remote-async?
15
17
16
- This is a lib for using promise under the protocol like socket(just like a normal request under http ).
18
+ This library allows the use of promises over protocols like sockets (similar to a standard HTTP request ).
17
19
18
- It has been specified a simple format between service and use a system like Subscribers - Publishers to get update .
20
+ It utilizes a simple format for communication between services and employs a Subscribers- Publishers system for updates .
19
21
20
- The server can be use under any protocol like socket , web worker event etc.
22
+ The server can operate over any protocol, such as sockets , web workers, events, etc.
21
23
22
24
23
- ## how to use
25
+ ## Usage
24
26
25
27
### iframe event
26
28
@@ -32,7 +34,7 @@ const iframe = document.getElementById('iframe')
32
34
const ORIGIN = ' some-origin'
33
35
window .addEventListener (' message' , (event ) => {
34
36
if ((event .origin || event .originalEvent .origin ) !== ORIGIN ) {
35
- // for security, host must match
37
+ // For security reasons, the host must match.
36
38
return ;
37
39
}
38
40
if (event .data .type === ' promise' ) {
@@ -44,17 +46,16 @@ ServerClient.registerSender((data) => {
44
46
})
45
47
46
48
ServerClient .listen (' anything' , (data , resolve , reject ) => {
47
- // do anything
49
+ // Perform any action.
48
50
})
49
51
ServerClient .registerPromise (' do-something' )
50
52
```
51
53
52
- The script should be same as previous code in iframe.After this, protocol is completely duplex communication under
53
- ` postMessage ` .
54
+ The script should be identical to the previous code within the iframe. After this, the protocol facilitates full duplex communication via postMessage
54
55
55
- ### figma plugin
56
+ ### Figma plugin
56
57
57
- Figma plugin usage was similar to iframe event usage .
58
+ Usage within a Figma plugin is similar to that of iframe events .
58
59
59
60
``` ts
60
61
// message front
@@ -83,7 +84,7 @@ ServerClient.registerPromise('do-something');
83
84
```
84
85
85
86
``` ts
86
- // field `main` in manifest.json
87
+ // Field `main` in manifest.json
87
88
export const serverMain = new Server ();
88
89
serverMain .registerSender ((data ) => {
89
90
figma .ui .postMessage ({
@@ -97,15 +98,15 @@ figma.ui.onmessage = (message) => {
97
98
serverMain .receiveData (message .data );
98
99
}
99
100
};
100
- // listen event from front
101
+ // Listen for events from the front.
101
102
serverMain .listen (' do something' , async (data , resolve , reject ) => {
102
- // do something
103
+ // Perform any action.
103
104
});
104
105
```
105
106
106
107
### qiankun
107
108
108
- qiankun did not have any events for communication, but wo can use ` onGlobalStateChange ` and ` setGlobalState ` to simulate event .
109
+ qiankun does not have native events for communication, but we can use onGlobalStateChange and setGlobalState to simulate events .
109
110
110
111
``` javascript
111
112
// main/index.js
@@ -117,26 +118,26 @@ const { onGlobalStateChange, setGlobalState } = initGlobalState({
117
118
118
119
const serverMain = new Server ();
119
120
serverMain .listen (' do-something' , (d , resolve , reject ) => {
120
- // if client send data { a: 1}, send resolve({ b:2 })
121
+ // If client sends data { a: 1}, send resolve({ b: 2 })
121
122
if (d .a === 1 ) {
122
123
resolve ({ b: 2 });
123
124
} else {
124
125
reject ({ c: 1 });
125
126
}
126
127
});
127
128
serverMain .registerSender ((data ) => {
128
- // define where to send data to client
129
+ // Define where to send data to the client.
129
130
setGlobalState ({ asyncData: data });
130
131
});
131
132
132
133
onGlobalStateChange ((value , prev ) => {
133
- // define where to receiveData from client
134
+ // Define where to receive data from the client.
134
135
serverMain .receiveData (value .asyncData );
135
136
});
136
137
```
137
138
138
139
``` javascript
139
- // single spa
140
+ // Single spa
140
141
export const ServerClient = new Server ();
141
142
function storeTest (props ) {
142
143
if (props .onGlobalStateChange ) {
@@ -159,13 +160,13 @@ function storeTest(props) {
159
160
},
160
161
});
161
162
}
162
- // to use in any vue component
163
+ // To use in any Vue component
163
164
export default {
164
165
methods: {
165
166
async click () {
166
- // just like axios
167
+ // Similar to using axios
167
168
const data = await ServerClient .registerPromise (' do-something' , { a: 1 });
168
- // should be {b: 2}
169
+ // Should return {b: 2}
169
170
console .log (data);
170
171
},
171
172
}
@@ -175,7 +176,7 @@ export default {
175
176
### socket
176
177
177
178
``` javascript
178
- // server
179
+ // Server
179
180
var io = require (' socket.io' )(http);
180
181
var { Server } = require (' remote-async' );
181
182
const serverMain = new Server ();
@@ -193,7 +194,7 @@ io.on('connection', (socket) => {
193
194
```
194
195
195
196
``` javascript
196
- // client
197
+ // Client
197
198
import { Server } from ' remote-async' ;
198
199
const serverClient = new Server ();
199
200
const socket = io ();
@@ -202,12 +203,12 @@ socket.on('connection', (socket) => {
202
203
serverClient .receiveData (data);
203
204
});
204
205
serverClient .registerSender ((data ) => socket .emit (' async-data' , data));
205
- // do a promise
206
+ // Execute a promise.
206
207
serverClient .registerPromise (' do-something' , {a: 1 })
207
208
.then ((d ) => {
208
- // it will return here
209
+ // It will return here.
209
210
console .log (d);
210
- // {b: 2}
211
+ // Should be {b: 2}.
211
212
})
212
213
socket .on (' disconnect' , () => {
213
214
console .log (' user disconnected' );
@@ -220,7 +221,7 @@ socket.on('connection', (socket) => {
220
221
221
222
### constructor(setting: { timeout: number })
222
223
223
- ` timeout ` default timeout setting
224
+ ` timeout ` : Default timeout setting.
224
225
225
226
### Server.receiveData(data: RemoteData)
226
227
@@ -229,18 +230,18 @@ Receive a remote data from another server.
229
230
230
231
### Server.listen(target: string, callback: RemoteCallBack)
231
232
232
- Add a listener on ` target ` path, which will call ` callback ` when ` receiveData ` was called by any conditions .
233
+ Add a listener on ` target ` path, which will call ` callback ` when ` receiveData ` is invoked under any circumstances .
233
234
234
235
### Server.off(target: string, callback?: any)
235
236
236
- Remove listener on target. This will remove all callbacks when callback params was not set.
237
+ Remove listener on target. This will remove all callbacks when the callback parameter is not set.
237
238
238
239
### Server.registerPromise(target: string, data: any, option: { timeout: number })
239
240
240
- Register a promise and pass to anther server which listen ` target ` path.
241
+ Registers a promise and sends it to another server listening on the ` target ` path.
241
242
242
243
243
244
### Server.registerSender(sender: (data: RemoteData) => void)
244
245
245
- Define the server sender how to pass a promise to another server
246
+ Defines how the server sender should pass a promise to another server.
246
247
0 commit comments