如何写GoLang PUT请求方法CoAP协议的服务器服务端点?

问题描述 投票:0回答:1

我试着写客户端和服务器在GoLang SOAP服务。我用qazxsw POI

我能够成功来电来邮终点,但不能够调用PUT。以下是我有问题

  1. 当我打电话POST终点,我转到客户说超时。但是,服务器收到请求。我怎样才能增加客户端超时?

我试过代码:客户端代码:

https://github.com/dustin/go-coap for this.
  1. 如何指定PUT服务端点进去吗?看起来我们不指定CoAP协议/ UDP请求的方法类型。但是,如果说,我有一个PUT端点应用程序/ {} APPID。它不接受{} APPID。它的工作原理只有当我将其更改为应用程序/应用标识。但我想这个应用标识作为参数,而不是路径。

客户代码:

req := coap.Message{
    Type:      coap.Confirmable,
    Code:      coap.POST,
    MessageID: 12345,
    Payload: []byte(`Hello CoAP Server `),
}
path := "/App"
if len(os.Args) > 1 {
    path = os.Args[1]
}
req.SetOption(coap.ETag, "weetag")
req.SetPathString(path)

c, err := coap.Dial("udp", "localhost:5683")
rv, err := c.Send(req)  

对于POST和PUT请求服务器代码:

    req := coap.Message{
    Type:      coap.Confirmable,
    Code:      coap.PUT,
    MessageID: 12345,
    Payload: []byte(`Hello CoAP Server `),
    }
    path := "/App/fb"   //here fb is app id and this can be anything
    if len(os.Args) > 1 {
    path = os.Args[1]
    }
    req.SetOption(coap.ETag, "weetag")
req.SetPathString(path)    
c, err := coap.Dial("udp", "localhost:5683")
rv, err := c.Send(req)  

这里是由PUT请求更新的应用程序服务器代码。在这里,我不知道我怎么可以指定端点在CoAP协议PUT。有人建议我怎么可以创建这个端点mux := coap.NewServeMux() // TODO-later: use UDP/coap mux.Handle("/App", coap.FuncHandler(Register)) mux.Handle("/App/{AppID}", coap.FuncHandler(UpdateApp)) err := coap.ListenAndServe("udp", ":5683", mux) 为PUT?

甚至让我知道如果有一个CoAP协议围棋服务更好的去图书馆吗?

go udp udpclient coap
1个回答
2
投票

根据这个例子:

mux.Handle("/App/{AppID}", coap.FuncHandler(UpdateApp))

看起来像一个中间人COAP处理只能由URI约束。我认为你必须自己处理不同类型的请求。

与不能识别的或不支持的方法的代码的请求必须生成一个4.05(不允许的方法)捎带响应。

来源:https://github.com/dustin/go-coap/blob/master/example/server/coap_server.go

可惜我没学去,从来没有使用过中间人COAP所以不能显示摘要。虽然我认为这将是很容易:你只需要回响应与非4.05用相同的MID和令牌。

© www.soinside.com 2019 - 2024. All rights reserved.