# aardio 范例: 飞书长连接 WebSocket 客户端范例

```aardio
// 飞书长连接 WebSocket 客户端范例
import console;
import win.ui;
import web.feishu.socketClient;

console.showLoading(" 正在启动飞书长连接客户端... ");

// 创建客户端
var client = web.feishu.socketClient(
    appId = "cli_********"; // 替换为你的 App ID
    appSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 替换为你的 App Secret
);

// 监听就绪事件
client.onReady = function(){
    console.success("飞书长连接已就绪！");
    console.log("连接 ID (Device ID):", client.connId);
    console.log("服务 ID (Service ID):", client.serviceId);
}

// 监听连接断开
client.onDisconnected = function(e){
    console.warn("连接已断开");
}

// 监听重连
client.onReconnecting = function(attempts, delay){
    console.log(string.format("正在进行第 %d 次重连，等待 %d 秒...", attempts, delay));
}

// 监听错误
client.onError = function(err){
    console.error("发生错误:", err);
}

// 监听所有事件 (通用回调)
client.onEvent = function(eventType, eventObj, frame, headers){
    console.log("收到事件:", eventType);
    console.dumpJson(eventObj);
    
    // 默认返回 null 即可，表示成功处理（会自动回包 200）
}

// 监听特定事件：机器人接收消息 v2.0
client.on("im.message.receive_v1", function(eventObj, frame, headers){
    console.success("收到机器人消息！");
    var message = eventObj.event.message;
    
    // 飞书消息内容 content 是一个 JSON 字符串，需要解析
    var contentObj = JSON.parse(message.content);
    console.log("消息文本:", contentObj.text);
    console.log("发送者 ID:", eventObj.event.sender.sender_id.open_id);
    
    // 自动回复用户
    var replyText = "你好！我已经收到你的消息：'" ++ contentObj.text ++ "'。这是一条来自 aardio 飞书长连接客户端的自动回复。";
    var res, err = client.replyText(message.message_id, replyText);
    if(res){
        console.success("自动回复成功！消息 ID:", res.data.message_id);
    }
    else {
        console.error("自动回复失败:", err);
    }
})

// 启动客户端
client.start();

// 必须启动消息循环，否则异步 WebSocket 和定时器无法工作
win.loopMessage();

```