LmeSzinc / AzurLaneAutoScript

Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界
https://alas.azurlane.cloud
GNU General Public License v3.0
6.92k stars 833 forks source link

Webui能支持IPv6或者双栈么 #1939

Open WolfCanglong opened 1 year ago

WolfCanglong commented 1 year ago

你的功能请求是否与问题有关?

不知道是不支持还是我不会配 默认的配置貌似只能IPv4访问 我看到deploy.yaml实际上是有IPv6相关内容 Webui:

--host. Host to listen

# [Use IPv6] '::'
# [In most cases] Default to '0.0.0.0'
WebuiHost: 0.0.0.0

但如果真的写::是无法启动的,会报错,如果写[::]能启动但是UI是白屏,而且网页界面好像也连不上 还是说要什么特殊的写法才行? 主要是有IPv6或者双栈的话我可以很方便直连webui不用再套隧道方便很多,如果不是很麻烦希望能实现一下

解决方案

Webui能支持IPv6或者双栈访问

其他内容

No response

18870 commented 1 year ago

因为各种bug的存在( ,目前ipv6只支持命令行加参数--host ::启动

启动后我本地是能打开 http://[::1]:22267 的,你再试试

WolfCanglong commented 1 year ago

因为各种bug的存在( ,目前ipv6只支持命令行加参数--host ::启动

  • 目前用于读取和保存deploy文件的简易yaml处理器会把值的引号去掉 而electron用的正经yaml不能处理 :: ,所以会报错
  • electron里的地址目前是写死的ipv4地址,之前改过一次localhost,但是因为在某些电脑上会忽略ipv4解析到ipv6地址上导致用v4的又打不开,所以改回来了 也就是目前的客户端是不能用ipv6的

启动后我本地是能打开 http://[::1]:22267 的,你再试试

我发现deploy如果写[::]而不是::其实是可以启动的,只是electron没界面而已,web打不开是我傻了…实际可以用的 不过这个东西本质上是不是可以双栈监听解决,我看到py是有dualstack的不过要3.8才行,能搞的话就不用纠结本地的地址了V4V6都能用 https://docs.python.org/3/library/socket.html#socket.create_server

18870 commented 1 year ago

双栈需要uvicorn支持 https://github.com/encode/uvicorn/discussions/1529

shengyusi-SYS commented 1 year ago

可以换个思路,在electron里加个小的代理服务器,localhost+端口,默认应该支持双栈,py的ip、端口不用变, import express from "express"; import proxyMw from "http-proxy-middleware"; const httpProxy = proxyMw.createProxyMiddleware({target: "http://127.0.0.1:22267",}); const wsProxy = proxyMw.createProxyMiddleware({target: "ws://127.0.0.1:22267",ws: true,}); express().use(wsProxy, httpProxy).listen(8080);//端口就任意改啦