如何在GoLang的CoAP中为服务器编写服务端点PUT请求方法?

如何在GoLang的CoAP中为服务器编写服务端点PUT请求方法?,go,udp,udpclient,coap,Go,Udp,Udpclient,Coap,我试图在GoLang为CoAP服务编写客户端和服务器。我曾经 我成功调用POST端点,但无法调用PUT。 以下是我的问题 当我调用POST端点时,我的Go客户机说超时。但服务器收到了请求。如何增加客户端超时 我尝试的代码: 客户端代码: req := coap.Message{ Type: coap.Confirmable, Code: coap.POST, MessageID: 12345, Payload: []byte(`Hello Co

我试图在GoLang为CoAP服务编写客户端和服务器。我曾经

我成功调用POST端点,但无法调用PUT。 以下是我的问题

  • 当我调用POST端点时,我的Go客户机说超时。但服务器收到了请求。如何增加客户端超时
  • 我尝试的代码: 客户端代码:

    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)  
    
        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)  
    
  • 如何指定将服务端点放入Go?看起来我们没有为CoAP/UDP指定请求方法类型。但是,如果说,我有一个PUT端点app/{appId}。它不接受{appID}。仅当我将其更改为app/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)  
    
        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)  
    
    POST和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中。有人能建议我如何创建这个端点
    mux.Handle(“/App/{AppID}”),coap.FuncHandler(UpdateApp))


    或者让我知道是否有更好的CoAP Go服务Go库?

    根据此示例:

    看起来go coap处理程序仅由URI绑定。 我想你得自己处理不同类型的请求

    必须生成包含无法识别或不支持的方法代码的请求 4.05(不允许使用方法)附带响应

    发件人:


    不幸的是,我没有学会围棋,也从来没有用过围棋,所以不能显示一个片段。尽管我认为这很容易:您只需要使用相同的MID和令牌以NON-4.05进行响应。

    根据此示例:

    看起来go coap处理程序仅由URI绑定。 我想你得自己处理不同类型的请求

    必须生成包含无法识别或不支持的方法代码的请求 4.05(不允许使用方法)附带响应

    发件人:

    不幸的是,我没有学会围棋,也从来没有用过围棋,所以不能显示一个片段。尽管我认为这很容易:你只需要用相同的MID和标记用非4.05来回应。

    为什么这个标记为“CocoaPods”?为什么这个标记为“CocoaPods”?