close #246, ws中,若未给出path,自动使用 "/"

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent 8ff9c91c23
commit f8fa461e6d
2 changed files with 11 additions and 5 deletions
+7 -4
View File
@@ -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) {
+4 -1
View File
@@ -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