首页 > 解决方案 > Websocket 431 错误:意外的服务器响应

问题描述

我一直在为自己构建一个应用程序来扫描某些泵等,我需要 1h 和 5m 蜡烛数据来跟踪此类事件。代码工作正常,直到它给出 431 错误:意外的服务器响应。我正在使用 c9 进行编码,但我读到这可能是 websocket 必须一次处理多个请求。所以我尝试在那里放一个 setInterval() ,但仍然是同样的错误。

有关代码的任何建议以及如何解决该问题?

var market1h = 'not yet defined';
var market5m = 'not yet defined';

binance.prevDay(false, (error, prevDay) => {
    let markets = [];
    for ( let obj of prevDay ) {
        let symbol = obj.symbol;
        markets.push(symbol);
    }
    setInterval(get1hData, 1500);
    setInterval(get5mData, 1200);

    function get1hData(){
        binance.websockets.candlesticks(markets, '1h', (candlestickData) => {
        let tick = binance.last(candlestickData);
        market1h = candlestickData[tick];
        io.emit('market1h', market1h);
        });
    }
    function get5mData(){
        binance.websockets.candlesticks(markets, '5m', (candlestickData) => {
        let tick = binance.last(candlestickData);
        market5m = candlestickData[tick];
        io.emit("market5m", market5m);
        });
    }
});

标签: node.jswebsocketsocket.iobinance

解决方案


strlen(url.path) 是我的转折点。

strlen 7929 = 成功

strlen 7942 = 失败

我没有找到任何关于 431 响应的官方文档。如果我不得不猜测:前端服务器拒绝超过一定大小的 url;并且不要将其送到后端服务器进行处理。

更新:

431 Request Header Fields Too Large 响应状态码表示服务器不愿意处理请求,因为它的头字段太大。

参考:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431


推荐阅读