UNPKG

aodianyun-lcps-mcp

Version:

奥点云活动导播台工程MCP服务

53 lines (44 loc) 1.67 kB
import { LCPSWebsocketClient } from './help_func_LcpsWebsocketClient.js'; const LCPSWebCall = function (wsaddr, onOpenCallback) { var pendingCalls = new Map(); // 存储待处理的调用 var callIdCounter = 0; // 用于生成唯一的callid var lcpsWebsocketClient = new LCPSWebsocketClient(wsaddr, "lcps.call", function () { if (onOpenCallback) { onOpenCallback(); } }, function (msg) { // console.log("onMsgCallback", msg); // 检查消息是否包含callid,如果有则查找对应的callback if (msg && msg.event == "CallResult" && msg.data && msg.data.callid) { var callid = msg.data.callid; var callback = pendingCalls.get(callid); if (callback) { // 找到对应的callback,调用它并移除pending call callback(msg.data.result); pendingCalls.delete(callid); } } }); this.Call = function (cmd, data, callback) { // 生成唯一的callid var callid = ++callIdCounter; // 如果有callback,将其存储到pending calls中 if (callback) { pendingCalls.set(callid, callback); } lcpsWebsocketClient.Send(JSON.stringify({ "event": "Call", "data": { "cmd": cmd, "data": data, "callid": callid } })); } this.Close = function () { lcpsWebsocketClient.Close(); // 清理所有pending calls pendingCalls.clear(); } } export { LCPSWebCall };