标签: gorilla

大猩猩会议包混乱

来自PHP背景我对Gorilla会话包有点困惑.

Gorilla的行为与PHP 相似$_SESSION['name']或类似$_COOKIE['name']吗?

我正在尝试使用两种方法为我的Go Web应用程序创建用户会话,但我不确定Gorilla会话是否是一个很好的包使用.我希望没有点击登录表单上的"记住我"按钮的用户在关闭浏览器后删除会话,而其他人都会有一个与之关联的cookie.那么Gorilla会话能够处理这两种情况,还是我应该在这种情况下使用其他东西?

session go gorilla

0
推荐指数
1
解决办法
960
查看次数

Golang Gorilla Mux服务器本地包导入并未使用问题

我正在使用Gorilla Mux测试一个简单的服务器应用程序.运行应用程序时,我一直收到未定义的错误.这是应用程序的结构

src/ptest/
??? app
?   ??? app.go
??? main.go
Run Code Online (Sandbox Code Playgroud)

main.go

package main

import (
    "fmt"
    "ptest/app"
)

func main() {
    fmt.Println("Hello Testing App")
    app := App{}
}
Run Code Online (Sandbox Code Playgroud)

app.go

package app

import (
    "fmt"
    "log"
    "net/http"
    "github.com/gorilla/mux"
)

type App struct {
    Router *mux.Router
}

func (A *App) Run() {
    fmt.Println("Listening at :8080")
    log.Fatal(http.ListenAndServe(":8080", A.Router))
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我有一个通过导入来main初始化appptest/app.但是当我go run *go:我收到错误:

# command-line-arguments
./main.go:5:2: imported and not used: "ptest/app"
./main.go:10:9: undefined: App
Run Code Online (Sandbox Code Playgroud)

这是我的go …

go gorilla

0
推荐指数
1
解决办法
164
查看次数

将golang与大猩猩websocket库一起使用,为什么WriteJson返回错误?

我正在按照这里的说明进行操作:

https://testnet.bitmex.com/app/wsAPI

并且我已经确认以下Python实现有效(例如,从我的角度来看,没有网络问题),因为:

python wsdump.py \
  wss://testnet.bitmex.com/realtime

> {"op":"subscribe","args":["orderBookL2_25:XBTUSD"]}
Run Code Online (Sandbox Code Playgroud)

结果是

{"success":true,"subscribe":"orderBookL2_25:XBTUSD","request":{"op":"subscribe","args":["orderBookL2_25:XBTUSD"]}}
Run Code Online (Sandbox Code Playgroud)

我试图修改大猩猩示例代码以将基本客户端组合在一起:

package main

import (
    "encoding/json"
    "flag"
    "fmt"
    "log"
    "net/url"
    "os"
    "os/signal"
    "time"

    "github.com/gorilla/websocket"
)

var addr = flag.String("addr", "testnet.bitmex.com", "http service address")

func main() {
    flag.Parse()
    log.SetFlags(0)

    interrupt := make(chan os.Signal, 1)
    signal.Notify(interrupt, os.Interrupt)

    u := url.URL{Scheme: "wss", Host: *addr, Path: "/realtime"}
    log.Printf("connecting to %s", u.String())

    c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    if err != nil {
        log.Fatal("dial:", err)
    }
    defer c.Close()

    done := make(chan struct{})

    go func() …
Run Code Online (Sandbox Code Playgroud)

go websocket gorilla

0
推荐指数
1
解决办法
375
查看次数

如何检查URL参数是否存在

在进行某种类型的验证之前,我必须检查URL参数是否存在。我怎样才能做到这一点?

如果参数是空的,例如:http : //myurl.com?myparam=,则myParam ==“”为true,但是,如果URL以这种方式出现,则http://myurl.com(不带参数),则myParam ==“ “也是如此...所以我需要一些方法来验证参数是否出现在网址中

# example
# http://myurl.com?myparam=johndoe

// validate if param exists, here i dont know how to do
#
#


// then do some validation
func validateMyParamIsNotNumber(r *http.Request, resultMessage *string) {
    myParam := r.FormValue("myparam")

    if myParam != ""  && isNotNumber(product) {
        *resultMessage = "The myparam filter must be a number"
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

go mux gorilla

0
推荐指数
1
解决办法
44
查看次数

webscoket 连接成功后如何发送消息到特定的 URI?

我有一个安全的 websocket 服务器在 localhost:443/server-demo (jetty websocket 服务器)上运行。现在我正在编写一个可以与websocket服务器通信的go客户端。我可以使用正确的证书连接到 websocket 服务器。这是示例代码。

package main
import (
    "crypto/tls"
    "crypto/x509"
    "fmt"
    "io"
    "log"
)
func main() {
    cert, err := tls.LoadX509KeyPair("nifi-1.10.0-bin/nifi-1.10.0/extras/gen-certs/certs/admin.pem", "nifi-1.10.0-bin/nifi-1.10.0/extras/gen-certs/certs/admin-key.pem")
    if err != nil {
        log.Fatalf("server: loadkeys: %s", err)
    }
    config := tls.Config{Certificates: []tls.Certificate{cert}, InsecureSkipVerify: true}
    conn, err := tls.Dial("tcp", "127.0.0.1:443", &config)
    if err != nil {
        log.Fatalf("client: dial: %s", err)
    }
    defer conn.Close()
    log.Println("client: connected to: ", conn.RemoteAddr())
    state := conn.ConnectionState() 
    for _, v := range state.PeerCertificates {
        fmt.Println(x509.MarshalPKIXPublicKey(v.PublicKey))
        fmt.Println(v.Subject)
    }
    log.Println("client: …
Run Code Online (Sandbox Code Playgroud)

client-server ssl-certificate go websocket gorilla

0
推荐指数
1
解决办法
271
查看次数

已部署的应用程序立即自行关闭

我有一个 Golang rest API 应用程序。我将它 Docker 化并部署到 Kubernetes。它在我的本地工作正常。

但是在 Kubernetes 中,应用程序会自行关闭,然后 pod 会重新启动。

我不明白为什么会发生这种情况。它不打印任何内容、任何日志或任何失败。

import ( 
" github.com/gorilla/mux"
"net/http"
"log"

)   
func main() {
    controller := controllers.Controllers{}
    router := mux.NewRouter()
    router.HandleFunc("/customer", controller.GetCustomer()).Methods("GET")
    router.HandleFunc("/customer", controller.InsertCustomer()).Methods("POST")
    router.HandleFunc("/healthcheck", controller.HealthCheck())

    addr := ":" + os.Getenv("PORT")
    srv := &http.Server{Addr: addr, Handler: router}

    go func() {
        if err := srv.ListenAndServe(); err != nil {
            log.Fatalf("listenAndServe failed: %v", err)
        }
    }()
    println("reached here")
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,当我查看日志时,我可以看到“到达此处”行。因此,出于某种原因,它会自行关闭。我检查了 env 变量,它也是正确的。我怀疑listenAndServe,但找不到合理的答案。为什么会是这个原因?

rest http go gorilla kubernetes

0
推荐指数
1
解决办法
54
查看次数