first commit
This commit is contained in:
68
net/proxyClient.go
Normal file
68
net/proxyClient.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package net
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/gorilla/websocket"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ProxyClient struct {
|
||||
proxy string
|
||||
conn *ClientConn
|
||||
}
|
||||
|
||||
func (this*ProxyClient) Connect() error {
|
||||
var dialer = websocket.Dialer{
|
||||
Subprotocols: []string{"p1", "p2"},
|
||||
ReadBufferSize: 1024,
|
||||
WriteBufferSize: 1024,
|
||||
HandshakeTimeout: 30 * time.Second,
|
||||
}
|
||||
ws, _, err := dialer.Dial(this.proxy, nil)
|
||||
if err == nil{
|
||||
this.conn = NewClientConn(ws)
|
||||
if this.conn.Start() == false{
|
||||
return errors.New("handshake fail")
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (this*ProxyClient) Send(msgName string, msg interface{}) (*RspBody, error){
|
||||
if this.conn != nil {
|
||||
return this.conn.Send(msgName, msg), nil
|
||||
}
|
||||
return nil, errors.New("conn not found")
|
||||
}
|
||||
|
||||
|
||||
func (this *ProxyClient) SetOnPush(hookFunc func (*ClientConn, *RspBody)) {
|
||||
if this.conn != nil {
|
||||
this.conn.SetOnPush(hookFunc)
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ProxyClient) SetOnClose(hookFunc func (*ClientConn)) {
|
||||
if this.conn != nil {
|
||||
this.conn.SetOnClose(hookFunc)
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ProxyClient) SetProperty(key string, value interface{}) {
|
||||
if this.conn != nil {
|
||||
this.conn.SetProperty(key, value)
|
||||
}
|
||||
}
|
||||
|
||||
func (this *ProxyClient) Close() {
|
||||
if this.conn != nil {
|
||||
this.conn.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func NewProxyClient(proxy string) *ProxyClient {
|
||||
return & ProxyClient{
|
||||
proxy: proxy,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user