aodianyun-lcps-mcp
Version:
奥点云活动导播台工程MCP服务
53 lines (44 loc) • 1.67 kB
JavaScript
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 };