精易论坛

标题: 有好用的websocket连接池没 [打印本页]

作者: 翎朗    时间: 2025-5-12 11:52
标题: 有好用的websocket连接池没
可以支持上千客户Duan同时连接服务端并保持同时在线的,可以支持自定义请求头与代理ip的

作者: wlp    时间: 2025-5-12 11:52
https://gitee.com/wlpxxx/wss3
作者: 随心o    时间: 2025-5-12 13:08
鱼刺的可以,只不过支持代理的版本收费...
作者: 小书    时间: 2025-5-12 13:53
你看E2EE可以不?
作者: imoling    时间: 2025-5-12 14:21
hpsocket就可以,free自行处理吧
作者: MP1286694461    时间: 2025-5-12 15:21
你得有个能撑得住的服务器
作者: xiaoyu1986    时间: 2025-5-12 17:09
你说的这种,鱼刺。2000块。
作者: nlxxbc    时间: 2025-5-12 18:15
https://www.bejson.com/httputil/websocket/
https://tool.hibbba.com/websocket/
https://www.wetools.com/websocket
http://www.jsons.cn/websocket/
https://websocket.jsonin.com/
http://wstool.js.org/
http://tool.pfan.cn/websocket/
http://tool.vpsche.com/websocket/
https://wstool.zlhvc.com/
https://tool.hibbba.com/websocket/
http://www.websocket-test.com/
作者: 翎朗    时间: 2025-5-12 20:41
wlp 发表于 2025-5-12 19:14
https://gitee.com/wlpxxx/wss3

这个模块确实不错,但是测试着连接某些服务器会闪退,还没找到解决方法
作者: 北寂    时间: 2025-5-12 20:46
什么语言?
作者: 北寂    时间: 2025-5-12 20:49
高并发WebSocket连接、自定义请求头及代理IP?

我推荐 Nginx反向代理 + 自研连接池架构。
支持HTTPS加密(wss://)和自定义请求头转发(如X-Real-IP)
开发可以用
Go语言的gorilla/websocket库支
Python的websockets库
等等,

还有使用神龙HTTP或天启代理的动态IP池服务,通过API实时获取高匿代理IP,支持HTTPS和SOCKS5协议,或者 隧道代理

补充内容 (2025-5-12 20:51):
小团队用 神龙HTTP动态IP池、、、

作者: wlp    时间: 2025-5-12 21:05
翎朗 发表于 2025-5-12 20:41
这个模块确实不错,但是测试着连接某些服务器会闪退,还没找到解决方法 ...

????
作者: 古道清风    时间: 2025-5-12 21:10
楼主,我最近刚好在学习网络通讯,现分享一个我前几天刚汉化好的模块给你,~如果对你有用,请记得选最佳,祝你代码永无BUG

特别说明一下:
1、本人只是负责了汉化,未修改任何原模块结构,用法与英文原模块一致;
2、汉化模块保留了英文模块的英文参数名称(在备注),方便英文用户搜索;
3、本模块并非本人原创,感谢HP_Socket的开源精神,感谢[鱼鱼鱼鱼児、(心冷、鱼儿)]的英文模块化
4、本汉化模块的命令学习了大神[君杰]的汉化命名
5、本模块已确保程序集名称、变量,子程序名称、变量、所有参数均已100%汉化
6、常亮未汉化,因为很难准确将常量翻译好,如有大神处理好了可以分享一份
7、因本人时间不够,DEMO未来得及汉化,需要参考DEMO的,请通过备注搜索的方式对照
8、源码、模块、DEMO全部一起压缩后都有15M,无法直接上传论坛,放在了迅雷网盘中
9、别问我为什么用迅雷,看一下下面的图,是你你用不?我一直用迅雷,大家理解并将就一下吧,感谢理解。
10、再次感谢论坛诸多前辈们,我过去多年承蒙关照,本人菜鸟一枚,如有不足之处,望海涵。
11、如你对本帖有任何不适,请马上离开,不要留下污言秽语,不甚感激!

HP-Socket 6.0.3_秋歌汉化2025.05.0下载地址.txt

1.37 KB, 下载次数: 1

售价: 1 枚 精币  [记录]


作者: wlp    时间: 2025-5-12 22:20
翎朗 发表于 2025-5-12 20:41
这个模块确实不错,但是测试着连接某些服务器会闪退,还没找到解决方法 ...

我猜,你用的是旧版本,易语言资源网下载的
作者: 你的猫    时间: 2025-5-12 23:11
  
窗口程序集名保 留  保 留备 注
WebSocket连接池   
变量名类 型数组备 注
连接池整数型1000"  ' 假设最大1000 
空闲连接整数型0 
活跃连接整数型0 
整数型  
服务器句柄整数型  

子程序名返回值类型公开备 注
_启动子程序整数型 
变量名类 型静态数组备 注
端口整数型 
端口 = 8888
启动服务器 (端口)
返回 (0)
子程序名返回值类型公开备 注
启动服务器逻辑型 
参数名类 型参考可空数组备 注
端口整数型
' 初始化锁
锁 = 创建进入许可证 ()
' 创建TCP服务器
服务器句柄 = 创建服务器 (端口)
如果 (服务器句柄 = 0)
输出调试文本 ("服务器启动失败!")
返回 ()
否则
输出调试文本 ("服务器已启动,监听端口:" + 到文本 (端口))
返回 ()
结束 如果
' 开始监听客户Duan连接
置服务器回调 (服务器句柄, &处理客户Duan连接)
返回 ()
子程序名返回值类型公开备 注
处理客户Duan连接  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
' 为新连接创建线程
启动线程 (&处理WebSocket握手, 客户Duan句柄, )
子程序名返回值类型公开备 注
处理WebSocket握手  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
变量名类 型静态数组备 注
请求头文本型 
请求行文本型0
i整数型 
自定义头文本型0
代理IP文本型 
响应文本型 
' 接收客户Duan请求
请求头 = 接收数据 (客户Duan句柄, 1024)
' 解析请求头
请求行 = 分割文本 (请求头, #换行符, )
' 检查是否是WebSocket连接
如果真 (取数组成员数 (请求行) > 0 寻找文本 (请求行 [1], "GET", , ) > 0
' 解析自定义头
解析自定义请求头 (请求头, 自定义头)

' 获取代理IP信息
代理IP = 获取代理IP (请求头)

' 验证代理IP和自定义头(这里添加你的验证逻辑)

' WebSocket握手响应
响应 = "HTTP/1.1 101 Switching Protocols" + #换行符
响应 = 响应 + "Upgrade: websocket" + #换行符
响应 = 响应 + "Connection: Upgrade" + #换行符
响应 = 响应 + "Sec-WebSocket-Accept: " + 生成SecWebSocketAccept (请求头) + #换行符 + #换行符

发送数据 (客户Duan句柄, 响应)

' 将连接加入连接池
进入许可区 ()

' 查找空闲位置
计次循环首 (取数组成员数 (连接池), i
如果真 (连接池 [i] = 0)
连接池 [i] = 客户Duan句柄
加入成员 (空闲连接, i)
跳出循环 ()

计次循环尾 ()

退出许可区 ()

' 开始处理WebSocket消息
处理WebSocket通信 (客户Duan句柄)
关闭连接 (客户Duan句柄)

子程序名返回值类型公开备 注
解析自定义请求头  
参数名类 型参考可空数组备 注
请求头文本型
自定义头文本型
变量名类 型静态数组备 注
行数组文本型0
i整数型 
文本型 
分隔位置整数型 
行数组 = 分割文本 (请求头, #换行符, )
计次循环首 (取数组成员数 (行数组), i)
行 = 行数组 [i]
' 跳过标准头
如果真 (寻找文本 (行, "Host:", , ) = 0 寻找文本 (行, "Upgrade:", , ) = 0 寻找文本 (行, "Connection:", , ) = 0)
到循环尾 ()

' 检查是否是自定义头(根据你的需求修改)
如果真 (寻找文本 (行, "X-", , ) = 1 寻找文本 (行, "Custom-", , ) = 1)
加入成员 (自定义头, 行)

计次循环尾 ()
子程序名返回值类型公开备 注
获取代理IP文本型 
参数名类 型参考可空数组备 注
请求头文本型
变量名类 型静态数组备 注
行数组文本型0
i整数型 
代理IP文本型 
行数组 = 分割文本 (请求头, #换行符, )
计次循环首 (取数组成员数 (行数组), i)
如果真 (寻找文本 (行数组 [i], "X-Forwarded-For:", , ) > 0)
代理IP = 取文本右边 (行数组 [i], 取文本长度 (行数组 [i]) - 16)
代理IP = 删首尾空 (代理IP)
返回 (代理IP)

如果真 (寻找文本 (行数组 [i], "Proxy-IP:", , ) > 0)
代理IP = 取文本右边 (行数组 [i], 取文本长度 (行数组 [i]) - 9)
代理IP = 删首尾空 (代理IP)
返回 (代理IP)

计次循环尾 ()
返回 ("")  ' 没有代理IP
子程序名返回值类型公开备 注
处理WebSocket通信  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
变量名类 型静态数组备 注
数据文本型 
解码数据文本型 
判断循环首 ()
数据 = 接收数据 (客户Duan句柄, 8192)

如果真 (数据 = "")
输出调试文本 ("客户Duan断开连接")
断开连接处理 (客户Duan句柄)
跳出循环 ()

' WebSocket数据帧解码
解码数据 = WebSocket解码 (数据)

' 处理业务逻辑(这里添加你的业务处理代码)
处理客户Duan消息 (客户Duan句柄, 解码数据)
判断循环尾 ()
子程序名返回值类型公开备 注
断开连接处理  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
变量名类 型静态数组备 注
i整数型 
进入许可区 ()
' 从连接池中移除
计次循环首 (取数组成员数 (连接池), i)
如果真 (连接池 [i] = 客户Duan句柄)
连接池 [i] = 0

' 从空闲连接或活跃连接中移除
变量循环首 (1, 取数组成员数 (空闲连接), 1, i)
如果真 (空闲连接 [i] = 客户Duan句柄)
删除成员 (空闲连接, i, 1)
跳出循环 ()

变量循环尾 ()

变量循环首 (1, 取数组成员数 (活跃连接), 1, i)
如果真 (活跃连接 [i] = 客户Duan句柄)
删除成员 (活跃连接, i, 1)
跳出循环 ()

变量循环尾 ()

跳出循环 ()

计次循环尾 ()
退出许可区 ()
关闭连接 (客户Duan句柄)
子程序名返回值类型公开备 注
处理客户Duan消息  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
消息文本型
' 这里添加你的业务逻辑处理代码
输出调试文本 ("收到客户Duan消息:" + 消息)
' 示例:回复客户Duan
发送WebSocket消息 (客户Duan句柄, "服务器已收到你的消息:" + 消息)
子程序名返回值类型公开备 注
发送WebSocket消息逻辑型 
参数名类 型参考可空数组备 注
客户Duan句柄整数型
消息文本型
变量名类 型静态数组备 注
帧数据文本型 
' WebSocket数据帧编码
帧数据 = WebSocket编码 (消息)
返回 (发送数据 (客户Duan句柄, 帧数据))
子程序名返回值类型公开备 注
WebSocket编码文本型 
参数名类 型参考可空数组备 注
消息文本型
' 实现WebSocket数据帧编码
' 这里简化为直接发送文本,实际需要按照WebSocket协议编码
返回 (消息)
子程序名返回值类型公开备 注
WebSocket解码文本型 
参数名类 型参考可空数组备 注
数据文本型
' 实现WebSocket数据帧解码
' 这里简化为直接返回文本,实际需要按照WebSocket协议解码
返回 (数据)
子程序名返回值类型公开备 注
生成SecWebSocketAccept文本型 
参数名类 型参考可空数组备 注
请求头文本型
' 实现WebSocket握手密钥生成
返回 "base64编码的密钥"  ' 这里需要实际实现
子程序名返回值类型公开备 注
获取空闲连接整数型 
变量名类 型静态数组备 注
连接句柄整数型 
进入许可区 ()
如果 (取数组成员数 (空闲连接) > 0)
连接句柄 = 空闲连接 [1]
删除成员 (空闲连接, 1, 1)
加入成员 (活跃连接, 连接句柄)
否则
连接句柄 = 0

退出许可区 ()
返回 (连接句柄)
子程序名返回值类型公开备 注
释放连接  
参数名类 型参考可空数组备 注
客户Duan句柄整数型
变量名类 型静态数组备 注
i整数型 
进入许可区 ()
' 从活跃连接移到空闲连接
变量循环首 (1, 取数组成员数 (活跃连接), 1, i)
如果真 (活跃连接 [i] = 客户Duan句柄)
删除成员 (活跃连接, i, 1)
加入成员 (空闲连接, 客户Duan句柄)
跳出循环 ()

变量循环尾 ()
退出许可区 ()


作者: 翎朗    时间: 2025-5-13 08:33
wlp 发表于 2025-5-12 22:20
我猜,你用的是旧版本,易语言资源网下载的

wss3测试.zip (1.39 MB, 下载次数: 1)

大佬麻烦给看下,我就是在您主页https://gitee.com/wlpxxx/wss3下载然后编译的,测试链接放到编辑框里了,用wss3连接就会闪退,用wss2就可以连接成功

作者: wlp    时间: 2025-5-13 10:35
翎朗 发表于 2025-5-13 08:33
大佬麻烦给看下,我就是在您主页https://gitee.com/wlpxxx/wss3下载然后编译的,测试链接放到编辑框里 ...

重新下载,最近优化写入,忘了测试




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4