mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2026-04-22 22:47:04 +08:00
close #246, ws中,若未给出path,自动使用 "/"
This commit is contained in:
@@ -17,7 +17,7 @@ import (
|
||||
"github.com/gobwas/ws/wsutil"
|
||||
)
|
||||
|
||||
//implements advLayer.SingleClient
|
||||
// implements advLayer.SingleClient
|
||||
type Client struct {
|
||||
Creator
|
||||
requestURL *url.URL //因为调用gobwas/ws.Dialer.Upgrade 时要传入url,所以我们直接提供包装好的即可
|
||||
@@ -27,8 +27,11 @@ type Client struct {
|
||||
headers *httpLayer.HeaderPreset
|
||||
}
|
||||
|
||||
// 这里默认,传入的path必须 以 "/" 为前缀. 本函数 不对此进行任何检查
|
||||
// 这里默认,传入的path必须 以 "/" 为前缀. 若path为空,本函数 将自动使用 "/"
|
||||
func NewClient(hostAddr, path string, headers *httpLayer.HeaderPreset, isEarly bool) (*Client, error) {
|
||||
if path == "" {
|
||||
path = "/"
|
||||
}
|
||||
u, err := url.Parse("http://" + hostAddr + path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -53,7 +56,7 @@ func (c *Client) IsEarly() bool {
|
||||
return c.UseEarlyData
|
||||
}
|
||||
|
||||
//与服务端进行 websocket握手,并返回可直接用于读写 websocket 二进制数据的 net.Conn
|
||||
// 与服务端进行 websocket握手,并返回可直接用于读写 websocket 二进制数据的 net.Conn
|
||||
func (c *Client) Handshake(underlay net.Conn, firstPayloadLen int) (net.Conn, error) {
|
||||
|
||||
if c.IsEarly() && firstPayloadLen > 0 && firstPayloadLen <= MaxEarlyDataLen {
|
||||
@@ -140,7 +143,7 @@ type EarlyDataConn struct {
|
||||
notFirstRead bool
|
||||
}
|
||||
|
||||
//第一次会获取到 内部的包头, 然后我们在这里才开始执行ws的握手
|
||||
// 第一次会获取到 内部的包头, 然后我们在这里才开始执行ws的握手
|
||||
// 这是verysimple的架构造成的. ws层后面跟着的应该就是代理层 的 Handshake调用,它会写入一次包头
|
||||
// 我们就是利用这个特征, 把vless包头 和 之前给出的earlydata绑在一起,进行base64编码然后进行ws握手
|
||||
func (edc *EarlyDataConn) Write(p []byte) (int, error) {
|
||||
|
||||
@@ -35,8 +35,11 @@ type Server struct {
|
||||
responseHeader ws.HandshakeHeader
|
||||
}
|
||||
|
||||
// 这里默认: 传入的path必须 以 "/" 为前缀. 本函数 不对此进行任何检查.
|
||||
// 这里默认: 传入的path必须 以 "/" 为前缀. 若path为空,本函数 将自动使用 "/"
|
||||
func NewServer(path string, headers *httpLayer.HeaderPreset, UseEarlyData bool) *Server {
|
||||
if path == "" {
|
||||
path = "/"
|
||||
}
|
||||
|
||||
noNeedToCheckRequestHeaders := headers == nil || headers.Request == nil || len(headers.Request.Headers) == 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user