在 Golang 中的 google cloud 上设置 web socket,并导入在我的本地机器上运行良好的代码在云上不起作用。我有:import "github.com/influxdb/influxdb/client/v2"并已运行go get "github.com/influxdb/influxdb/client/v2"运行 go run server.go 后,我得到:# command-line-arguments./pi_server.go:47: undefined: client.NewClient./pi_server.go:47: undefined: client.Config下面的完整代码,不包括 const 声明和 html:package mainimport ( "flag" "html/template" "log" "net/http" "github.com/gorilla/websocket" "fmt" "net/url" "github.com/influxdb/influxdb/client/v2" "time")var addr = flag.String("addr", "localhost:8080", "http service address")var upgrader = websocket.Upgrader{} // use default optionsfunc echo(w http.ResponseWriter, r *http.Request) { //Influx init u,err := url.Parse("http://localhost:8086") checkError(err) influx_c := client.NewClient(client.Config{ URL: u, Username: username, Password: password, }) bp,err := client.NewBatchPoints(client.BatchPointsConfig{ Database: MyDB, Precision: "s", }) tags := map[string]string{"my_sensor_id": my_sensor_id} //end influx init c, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("upgrade:", err) return } defer c.Close() for { mt, message, err := c.ReadMessage() if err != nil { log.Println("read:", err) break } log.Printf("recv: %s", message) /* write to influx here */ fields := map[string]interface{}{ "random_int": message, "other_stuff": 69696, } pt,err := client.NewPoint("test_collection", tags, fields, time.Now()) checkError(err) bp.AddPoint(pt) influx_c.Write(bp) err = c.WriteMessage(mt, message) if err != nil { log.Println("write:", err) break } }}func home(w http.ResponseWriter, r *http.Request) { homeTemplate.Execute(w, "ws://"+r.Host+"/echo", )}
2 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
在此提交之前,您的本地机器有一个 github.com/influxdb/influxdb/client/v2 版本。您的云服务器正在获取更新版本的软件包。
要解决此问题,请运行
go get -u github.com/influxdb/influxdb/client/v2
在本地机器上获取最新版本的软件包。更新应用程序代码以使用新的函数和类型名称:
influx_c := client.NewHTTPClient(client.HTTPConfig{
URL: u,
Username: username,
Password: password,
})
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
搞定了,谢谢!另请注意以下代码:
influx_c,err := client.NewHTTPClient(client.HTTPConfig{
Addr: "http://localhost:8086",
Username: username,
Password: password,
})
他们将 URL 字段更改为 Addr,使用的是字符串文字而不是 net/url 对象
- 2 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消