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

Node WebSocket连接Lightstreamer Server发送命令遇1011错误求助

解决Lightstreamer WebSocket发送命令后1011错误问题

以下是针对代码中问题的具体修复步骤:

1. 修正WebSocket协议头不匹配问题

你手动设置的Sec-WebSocket-Protocol为TLCP-2.2.0.lightstreamer.com,但WebSocket构造函数传入的协议列表是["js.lightstreamer.com", "websocket"],两者不匹配会导致服务器后续命令解析异常。需要将构造函数的协议参数改为与请求头一致的值:

this.ws = new WebSocket("wss://push.lightstreamer.com/lightstreamer", ["TLCP-2.2.0.lightstreamer.com"], {
    headers, agent: agent,  rejectUnauthorized: false
});

2. 移除手动设置的Sec-WebSocket-Key

Sec-WebSocket-Key是WebSocket握手时客户端自动生成的随机密钥,手动固定值可能破坏握手后的会话验证逻辑,直接从headers中删除该字段:

// 删除这一行
// headers["Sec-WebSocket-Key"] ="a key==";

3. 确保命令以换行符结尾

Lightstreamer的文本协议要求每个命令必须以**换行符(\n)**作为结束标记,你发送的wsok缺少换行,服务器无法正确识别命令格式,修改发送内容:

this.ws.send(`wsok\n`);

修复后的完整代码

import * as WebSocket from 'ws';
var url = require('url');
var HttpsProxyAgent = require('https-proxy-agent');

class sg{
    ws:WebSocket;
    constructor(){
        var headers = {};
        headers["Host"] ="push.lightstreamer.com";
        headers["User-Agent"] ="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0";
        headers["Accept"] ="*/*";
        headers["Accept-Language"] ="de,en-US;q=0.7,en;q=0.3";
        headers["Accept-Encoding"] ="gzip, deflate, br";
        headers["Sec-WebSocket-Version"] ="13";
        headers["Origin"] ="https://demos.lightstreamer.com";
        headers["Sec-WebSocket-Protocol"] ="TLCP-2.2.0.lightstreamer.com";
        headers["Sec-WebSocket-Extensions"] ="permessage-deflate";
        headers["Connection"] ="keep-alive, Upgrade";
        headers["Sec-Fetch-Dest"] ="websocket";
        headers["Sec-Fetch-Mode"] ="websocket";
        headers["Sec-Fetch-Site"] ="same-site";
        headers["Pragma"] ="no-cache";
        headers["Cache-Control"] ="no-cache";
        headers["Upgrade"] ="websocket";

        var options = url.parse('http://192.168.185.24:8888');
        var agent = new HttpsProxyAgent(options);
        this.ws = new WebSocket("wss://push.lightstreamer.com/lightstreamer", ["TLCP-2.2.0.lightstreamer.com"], {
            headers, agent: agent,  rejectUnauthorized: false
        });
        
        this.ws.onopen = (e) => {
            console.log("open")
            setTimeout(() => {
                this.ws.send(`wsok\n`);
            }, 1500);
        };
        
        this.ws.onmessage = (e) => {
            console.log("Received:", e.data)
        }
        
        this.ws.onerror = error => {
            console.log(`WebSocket error: ${error}`)
        }
        
        this.ws.onclose = (event) => {
            console.log(`Closed: ${event.code} - ${event.reason}`)
        }
    }
}

let xsg = new sg();

额外说明

  • 不需要手动设置Connection和Upgrade头,ws库会自动处理这些握手必需的字段,不过保留也不会有问题;
  • 添加onclose监听可以更直观地查看连接关闭时的错误码和原因,方便后续排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:50:26