( prefix: string, path: string, receiverFrom: Server, senderTo: MessageSend, middleware?: ApiFunctionSync )
| 289 | |
| 290 | // 转发消息 |
| 291 | export function forwardMessage( |
| 292 | prefix: string, |
| 293 | path: string, |
| 294 | receiverFrom: Server, |
| 295 | senderTo: MessageSend, |
| 296 | middleware?: ApiFunctionSync |
| 297 | ) { |
| 298 | const handler = async (params: any, fromCon: IGetSender): Promise<any> => { |
| 299 | const fromConnect: MessageConnect | undefined = fromCon.getConnect(); |
| 300 | if (fromConnect) { |
| 301 | const toCon: MessageConnect = await connect(senderTo, `${prefix}/${path}`, params); |
| 302 | fromConnect.onMessage(toCon.sendMessage.bind(toCon)); |
| 303 | toCon.onMessage(fromConnect.sendMessage.bind(fromConnect)); |
| 304 | fromConnect.onDisconnect(toCon.disconnect.bind(toCon)); |
| 305 | toCon.onDisconnect(fromConnect.disconnect.bind(fromConnect)); |
| 306 | return undefined; |
| 307 | } else { |
| 308 | return sendMessage(senderTo, prefix + "/" + path, params); |
| 309 | } |
| 310 | }; |
| 311 | receiverFrom.on(path, (params, sender) => { |
| 312 | if (middleware) { |
| 313 | // 此处是为了处理CustomEventMessage的同步消息情况 |
| 314 | const resp = middleware(params, sender) as any; |
| 315 | if (resp instanceof Promise) { |
| 316 | return resp.then((data) => { |
| 317 | if (data !== false) { |
| 318 | return data; |
| 319 | } |
| 320 | return handler(params, sender); |
| 321 | }); |
| 322 | } else if (resp !== false) { |
| 323 | return resp; |
| 324 | } |
| 325 | } |
| 326 | return handler(params, sender); |
| 327 | }); |
| 328 | } |
no test coverage detected