You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何DonationAlerts API socket连接会返回服务器错误?

问题原因及修复方案

1. Socket.IO客户端版本不兼容

DonationAlerts的Socket服务端使用2.x版本Socket.IO,若你本地安装的是3.x/4.x版本的socket.io-client会直接触发连接错误。
执行以下命令切换到兼容版本:

npm uninstall socket.io-client
npm install socket.io-client@2.5.0

2. 身份验证请求发送时机错误

你当前的add-user请求写在连接逻辑之外,会在Socket未完成连接时就发送请求,触发服务端拒绝。需要把这行代码移动到connect事件的回调函数内部。

3. 缺少必要的连接配置

需要显式指定传输协议为websocket,避免默认的长轮询模式被服务端拦截。


修正后的完整代码

const config = require("./config");
const io = require('socket.io-client');

// 增加连接配置参数
const socket = io.connect("wss://socket.donationalerts.ru:443", {
    transports: ['websocket'],
    reconnection: true,
    reconnectionDelay: 1000,
    reconnectionDelayMax: 5000
});

socket.on("connect_error", (err) => {
    console.error(`connect_error ${err.message}`);
    //process.exit()
});
socket.on("disconnect", () => {
    console.log("socket disconnected");
});
socket.on("connect", () => {
    console.log("app is starting");
    // 连接成功后再发送身份验证请求
    socket.emit('add-user', { token: config.web.datoken, type: "minor" });
    
    const engine = socket.io.engine;
    engine.on("disconnect", () => {
        console.log("Disconnected");
    })
})

socket.on("donation", (donate) => {
    donate = JSON.parse(donate);
    let data = [
        `- Username: ${donate["username"]}`,
        `- Amount: ${donate["amount"]} ${donate["currency"]}`,
        `- Message: ${donate["message"]}`]
    console.log(`${data.join("\n")}`);
});

额外排查点

  • 确认你使用的令牌是DonationAlerts后台Socket API专属令牌,而非OAuth2接口令牌,令牌权限需要勾选捐赠通知读取权限
  • 检查本地网络是否可以正常访问socket.donationalerts.ru:443,部分地区网络可能需要代理支持

内容的提问来源于stack exchange,提问作者Street02_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:24:08