登录
首页 >  Golang >  Go问答

可以使用 Go net/rpc 读取元数据吗?

来源:stackoverflow

时间:2024-03-14 17:09:27 328浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《可以使用 Go net/rpc 读取元数据吗?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

go 中的 rpc 服务器示例通常如下所示(来自 https://golang.org/pkg/net/rpc/):

arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
l, e := net.Listen("tcp", ":1234")
if e != nil {
    log.Fatal("listen error:", e)
}
go http.Serve(l, nil)

是否可以在将连接传递给注册函数之前检查与连接关联的元数据?我想首先根据 acl 检查客户端 ip、api 密钥和请求的功能。

编辑添加:我意识到可以使用 l.remoteaddr() 从侦听器获取远程地址 - 目前尚不清楚如何获取 api 密钥和请求的功能。

进入该函数后,我可以获取 api 密钥,但不能获取客户端 ip。在函数内部执行此操作不太理想,因为 acl 检查样板必须进入每个函数。


解决方案


遗憾的是,我确定如果不分叉 net/rpc 并为其添加上下文功能,这是不可能的。

将上下文传递给注册的函数似乎是一个常见的功能请求;然而,根据 https://golang.org/pkg/net/rpc/,“net/rpc 包已冻结并且不接受新功能。”

以上就是《可以使用 Go net/rpc 读取元数据吗?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>