MCPcopy Index your code
hub / github.com/scriptscat/scriptcat / forwardMessage

Function forwardMessage

packages/message/server.ts:291–328  ·  view source on GitHub ↗
(
  prefix: string,
  path: string,
  receiverFrom: Server,
  senderTo: MessageSend,
  middleware?: ApiFunctionSync
)

Source from the content-addressed store, hash-verified

289
290// 转发消息
291export 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}

Callers 2

initManagerMethod · 0.90
initMethod · 0.90

Calls 2

handlerFunction · 0.70
onMethod · 0.45

Tested by

no test coverage detected