Ethereum 如何修复';写入tcp 127.0.0.1:54917->;127.0.0.1:8545:i/o超时';侦听智能合约事件的golang代码中出错

Ethereum 如何修复';写入tcp 127.0.0.1:54917->;127.0.0.1:8545:i/o超时';侦听智能合约事件的golang代码中出错,ethereum,smartcontracts,go-ethereum,ganache,Ethereum,Smartcontracts,Go Ethereum,Ganache,我正在使用golang收听smart contract事件。我将合约部署到ganache ui和ganache cli端口。但我得到以下错误: ➜ sc_events go run main.go 2019/04/17 14:25:04 write tcp 127.0.0.1:54917->127.0.0.1:8545: i/o timeout exit status 1 我尝试同时使用ganache ui(侦听端口7545)和ganache cli(8545)。它们似乎都产生了相同

我正在使用golang收听smart contract事件。我将合约部署到ganache ui和ganache cli端口。但我得到以下错误:

➜  sc_events go run main.go

2019/04/17 14:25:04 write tcp 127.0.0.1:54917->127.0.0.1:8545: i/o timeout
exit status 1
我尝试同时使用ganache ui(侦听端口7545)和ganache cli(8545)。它们似乎都产生了相同的错误。但是如果我听infura的URL,我想我不会犯这个错误

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/ethereum/go-ethereum"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/core/types"
    "github.com/ethereum/go-ethereum/ethclient"
)

func main() {
    client, err := ethclient.Dial("ws://127.0.0.1:8545")
    // client, err := ethclient.Dial("wss://rinkeby.infura.io/ws/v3/010590bb415e4664835a05a53b18a293")
    if err != nil {
        log.Fatal(err)
    }

    contractAddress := common.HexToAddress("0x82726c7c1202565f1fef63fa8d4caca6366d4749")
    query := ethereum.FilterQuery{
        Addresses: []common.Address{contractAddress},
    }

    logs := make(chan types.Log)

    sub, err := client.SubscribeFilterLogs(context.Background(), query, logs)
    if err != nil {
        log.Fatal(err)
    }

    for {
        select {
        case err := <-sub.Err():
            log.Fatal(err)
        case vLog := <-logs:
            fmt.Println(vLog) // pointer to event log
        }
    }
}
主程序包
进口(
“上下文”
“fmt”
“日志”
“github.com/ethereum/go ethereum”
“github.com/ethereum/go-ethereum/common”
“github.com/ethereum/go-ethereum/core/types”
“github.com/ethereum/go-ethereum/ethclient”
)
func main(){
client,err:=ethclient.Dial(“ws://127.0.0.1:8545”)
//客户端,错误:=ethclient.Dial(“wss://rinkeby.infura.io/ws/v3/010590bb415e4664835a05a53b18a293")
如果错误!=零{
log.Fatal(错误)
}
合同地址:=公共.HexToAddress(“0x82726c7c202565f1fef63fa8d4caca636d4749”)
查询:=ethereum.FilterQuery{
地址:[]公共地址{contractAddress},
}
日志:=make(chan types.Log)
sub,err:=client.subscribebefilterlogs(context.Background(),查询,日志)
如果错误!=零{
log.Fatal(错误)
}
为了{
挑选{
案例错误:=