diff --git a/etc/blockchain.yaml b/etc/blockchain.yaml index abde5db..62f409e 100644 --- a/etc/blockchain.yaml +++ b/etc/blockchain.yaml @@ -2,7 +2,7 @@ Name: blockchain.rpc ListenOn: 0.0.0.0:8888 Etcd: Hosts: - - 10.0.0.19:2379 + - localhost:2379 Key: blockchain.rpc Binance: Key: "" diff --git a/go.mod b/go.mod index ccf241a..dffcefe 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.5 require ( github.com/alicebob/miniredis/v2 v2.35.0 github.com/gocql/gocql v1.5.0 + github.com/lxzan/gws v1.8.9 github.com/panjf2000/ants/v2 v2.11.3 github.com/scylladb/gocqlx/v3 v3.0.1 github.com/stretchr/testify v1.10.0 @@ -28,6 +29,7 @@ require ( github.com/docker/docker v28.2.2+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/dolthub/maphash v0.1.0 // indirect github.com/ebitengine/purego v0.8.4 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-ole/go-ole v1.2.6 // indirect diff --git a/go.sum b/go.sum index e2e3e4f..2bc1cd5 100644 --- a/go.sum +++ b/go.sum @@ -60,6 +60,8 @@ github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dolthub/maphash v0.1.0 h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ= +github.com/dolthub/maphash v0.1.0/go.mod h1:gkg4Ch4CdCDu5h6PMriVLawB7koZ+5ijb9puGMV50a4= github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= @@ -146,6 +148,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lxzan/gws v1.8.9 h1:VU3SGUeWlQrEwfUSfokcZep8mdg/BrUF+y73YYshdBM= +github.com/lxzan/gws v1.8.9/go.mod h1:d9yHaR1eDTBHagQC6KY7ycUOaz5KWeqQtP3xu7aMK8Y= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= diff --git a/internal/lib/websocket/config.go b/internal/lib/websocket/config.go new file mode 100644 index 0000000..e8fafea --- /dev/null +++ b/internal/lib/websocket/config.go @@ -0,0 +1,27 @@ +package websocket + +import ( + "crypto/tls" + "github.com/lxzan/gws" + "net/http" + "time" +) + +type ClientOption struct { + WriteBufferSize int + PermessageDeflate gws.PermessageDeflate + ParallelEnabled bool + ParallelGoLimit int + ReadMaxPayloadSize int + ReadBufferSize int + WriteMaxPayloadSize int + CheckUtf8Enabled bool + Logger gws.Logger + Recovery func(logger gws.Logger) + Addr string + RequestHeader http.Header + HandshakeTimeout time.Duration + TlsConfig *tls.Config + NewDialer func() (gws.Dialer, error) + NewSession func() gws.SessionStorage +} diff --git a/internal/lib/websocket/connection.go b/internal/lib/websocket/connection.go new file mode 100644 index 0000000..3ed8ef8 --- /dev/null +++ b/internal/lib/websocket/connection.go @@ -0,0 +1,25 @@ +package websocket + +import ( + "github.com/lxzan/gws" + "net/url" +) + +type Connection struct { + *gws.Conn +} + +func NewWebSocketConnect(url url.URL, handler gws.Event) (*Connection, error) { + socket, _, err := gws.NewClient(handler, &gws.ClientOption{ + Addr: url.String(), + }) + if err != nil { + return nil, err + } + // 取得消息 + go socket.ReadLoop() + + return &Connection{ + socket, + }, nil +} diff --git a/internal/lib/websocket/option.go b/internal/lib/websocket/option.go new file mode 100644 index 0000000..708bc8c --- /dev/null +++ b/internal/lib/websocket/option.go @@ -0,0 +1 @@ +package websocket