Documentation ¶
Overview ¶
Package websocket implements Websocket transport
Websocket transport implements a HTTP(S) compliable, surveillance proof transport method with plausible deniability.
To configure such a listener, set streamSettings to be ws. A http(s) listener will be listening at the port you have configured.
There is additional configure can be made at transport configure.
"wsSettings":{ "Path":"ws", // the path our ws handler bind "Pto": "wss/ws", // the transport protocol we are using ws or wss(listen ws with tls) "Cert":"cert.pem", // if you have configured to use wss, configure your cert here "PrivKey":"priv.pem" //if you have configured to use wss, configure your privatekey here }
To configure such a Dialer, set streamSettings to be ws.
There is additional configure can be made at transport configure.
"wsSettings":{ "Path":"ws", // the path our ws handler bind "Pto": "wss/ws", // the transport protocol we are using ws or wss(listen ws with tls) }
It is worth noting that accepting a non-valid cert is not supported as a self-signed or invalid cert can be a sign of a website that is not correctly configured and lead to additional investigation.
This transport was disscussed at https://github.com/v2ray/v2ray-core/issues/224
Index ¶
- Variables
- func Dial(src v2net.Address, dest v2net.Destination, options internet.DialerOptions) (internet.Connection, error)
- func ListenWS(address v2net.Address, port v2net.Port, options internet.ListenOptions) (internet.Listener, error)
- type Config
- type ConnectionReuse
- type ConnectionWithError
- type StoppableListener
- type WSListener
Constants ¶
This section is empty.
Variables ¶
var (
ErrClosedListener = errors.New("Listener is closed.")
)
var StoppedError = errors.New("Listener stopped")
Functions ¶
func Dial ¶
func Dial(src v2net.Address, dest v2net.Destination, options internet.DialerOptions) (internet.Connection, error)
Types ¶
type Config ¶
type Config struct { // Whether or not to reuse WebSocket connections. ConnectionReuse *ConnectionReuse `protobuf:"bytes,1,opt,name=connection_reuse,json=connectionReuse" json:"connection_reuse,omitempty"` // URL path to the WebSocket service. Empty value means root(/). Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` }
func (*Config) Descriptor ¶
func (*Config) GetConnectionReuse ¶
func (m *Config) GetConnectionReuse() *ConnectionReuse
func (*Config) IsConnectionReuse ¶
func (*Config) ProtoMessage ¶
func (*Config) ProtoMessage()
type ConnectionReuse ¶
type ConnectionReuse struct {
Enable bool `protobuf:"varint,1,opt,name=enable" json:"enable,omitempty"`
}
func (*ConnectionReuse) Descriptor ¶
func (*ConnectionReuse) Descriptor() ([]byte, []int)
func (*ConnectionReuse) GetEnable ¶
func (m *ConnectionReuse) GetEnable() bool
func (*ConnectionReuse) ProtoMessage ¶
func (*ConnectionReuse) ProtoMessage()
func (*ConnectionReuse) Reset ¶
func (m *ConnectionReuse) Reset()
func (*ConnectionReuse) String ¶
func (m *ConnectionReuse) String() string
type ConnectionWithError ¶
type ConnectionWithError struct {
// contains filtered or unexported fields
}
type StoppableListener ¶
func NewStoppableListener ¶
func NewStoppableListener(l net.Listener) (*StoppableListener, error)
func (*StoppableListener) Stop ¶
func (sl *StoppableListener) Stop()
type WSListener ¶
func (*WSListener) Accept ¶
func (v *WSListener) Accept() (internet.Connection, error)
func (*WSListener) Addr ¶
func (v *WSListener) Addr() net.Addr
func (*WSListener) Close ¶
func (v *WSListener) Close() error
func (*WSListener) Put ¶
func (v *WSListener) Put(id internal.ConnectionID, conn net.Conn)