forked from cerc-io/plugeth
Co-authored-by: Hao Duan <duan.hao@hyperchain.cn>
This commit is contained in:
parent
d02301f758
commit
a188a1e150
@ -154,7 +154,7 @@ func (s *Service) loop() {
|
||||
txSub := txpool.SubscribeNewTxsEvent(txEventCh)
|
||||
defer txSub.Unsubscribe()
|
||||
|
||||
// Start a goroutine that exhausts the subsciptions to avoid events piling up
|
||||
// Start a goroutine that exhausts the subscriptions to avoid events piling up
|
||||
var (
|
||||
quitCh = make(chan struct{})
|
||||
headCh = make(chan *types.Block, 1)
|
||||
@ -194,16 +194,17 @@ func (s *Service) loop() {
|
||||
}
|
||||
close(quitCh)
|
||||
}()
|
||||
|
||||
// Resolve the URL, defaulting to TLS, but falling back to none too
|
||||
path := fmt.Sprintf("%s/api", s.host)
|
||||
urls := []string{path}
|
||||
|
||||
// url.Parse and url.IsAbs is unsuitable (https://github.com/golang/go/issues/19779)
|
||||
if !strings.Contains(path, "://") {
|
||||
urls = []string{"wss://" + path, "ws://" + path}
|
||||
}
|
||||
// Loop reporting until termination
|
||||
for {
|
||||
// Resolve the URL, defaulting to TLS, but falling back to none too
|
||||
path := fmt.Sprintf("%s/api", s.host)
|
||||
urls := []string{path}
|
||||
|
||||
// url.Parse and url.IsAbs is unsuitable (https://github.com/golang/go/issues/19779)
|
||||
if !strings.Contains(path, "://") {
|
||||
urls = []string{"wss://" + path, "ws://" + path}
|
||||
}
|
||||
// Establish a websocket connection to the server on any supported URL
|
||||
var (
|
||||
conn *websocket.Conn
|
||||
@ -240,11 +241,12 @@ func (s *Service) loop() {
|
||||
}
|
||||
// Keep sending status updates until the connection breaks
|
||||
fullReport := time.NewTicker(15 * time.Second)
|
||||
defer fullReport.Stop()
|
||||
|
||||
for err == nil {
|
||||
select {
|
||||
case <-quitCh:
|
||||
fullReport.Stop()
|
||||
// Make sure the connection is closed
|
||||
conn.Close()
|
||||
return
|
||||
|
||||
@ -269,6 +271,7 @@ func (s *Service) loop() {
|
||||
}
|
||||
}
|
||||
}
|
||||
fullReport.Stop()
|
||||
// Make sure the connection is closed
|
||||
conn.Close()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user