求助, 我在开发一个 vscode 插件, 发现插件中无法保持 http 长连接, 是插件有哪些隐藏设定吗

2023-07-09 15:05:22 +08:00
 loongwang

下面这段代码

  let XXXXX = new http.Agent({ keepAlive: true, maxSockets: 1})
    for(let i=0;i<3;i++){
        http.get({
            hostname: 'localhost',
            method:'GET',
            port: 23659,
            path: '/api/get/alive',
            agent:XXXXX
        }, resp => {
            resp.on('data', data => {
                console.log('data',data)
            });
            for (const key in XXXXX.sockets) {
                console.log(key)
                // if (XXXXX.sockets.hasOwnProperty(key)) {
                //     console.log(key + ": ", XXXXX.sockets[key]);
            }
        }).end()

放在 vscode 插件中, 运行后用 wireshark 抓包发现

Connection:close

放在一个普通 npm 项目中

Connection:keep-alive

搞了两天扛不住了, 大大们帮忙看看

2033 次点击
所在节点    Visual Studio Code
6 条回复
jry
2023-07-09 20:21:51 +08:00
websocket
foolishcrab
2023-07-09 22:25:58 +08:00
你这是一个典型的 xy 问题,建议了解一下
loongwang
2023-07-09 22:37:01 +08:00
@jry 改造成本有点大,所以想尽可能解决长连接问题
loongwang
2023-07-09 22:39:44 +08:00
@foolishcrab 求解,
我的逻辑是
发现 http 没有 keep-alive 导致逻辑存在问题=>尝试修改代码解决 keep-alive 问题 => 发现普通项目 keep-alive 没问题,但是插件项目中有问题 =>解决不了,发帖求助
niub
2023-07-10 09:20:39 +08:00
跟插件没啥关系,HTTP/1.1 起默认长连接
loongwang
2023-07-11 19:42:32 +08:00
@niub but 在一个新的非插件项目中 表现就正常

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX