15.10. 使用 netchan 跨网络实现消息传递

未匹配的标注

备注: Go 团队决定改进和修改现在版本的 netchan 包。这个包已经被移动到 old/netchan ,并且 old/ 层级的包中是保留的不被推荐的代码,它已经从 Go 1. 中从标准库中移除。本章节为了向后兼容,只讨论下 netchan 包的概念。

译者注: 如果想使用这个包,需要科学上网后,在命令行执行: go get golang.org/x/exp/old/netchan 安装

一个与 rpc 密切相关的在网络上使用 通道 的技术。在 [14 章]() 中,通道作为一个本地通道被使用,它们只存在于执行它们的机器的内存空间中。netchan 包实现了类型安全的网络通道: 它允许通道的两端出现在通过网络连接的不同计算机上。一个出口按照名称发布 一个(组) 通道 。一个入口去连接出口的机器,并按照名称输入到 通道 。网络 通道 不是同步的,它们就像是缓冲 通道

在发送机器上,代码就像这样:

exp, err := netchan.NewExporter("tcp", "netchanserver.mydomain.com:1234")
if err != nil {
   log.Fatalf("Error making Exporter: %v", err)
}
ch := make(chan myType)
err := exp.Export("sendmyType", ch, netchan.Send)
if err != nil {
   log.Fatalf("Send Error: %v", err)
}

接收方代码:

imp, err := netchan.NewImporter("tcp", "netchanserver.mydomain.com:1234")
if err != nil {
   log.Fatalf("Error making Importer: %v", err)
}
ch := make(chan myType)
err = imp.Import("sendmyType", ch, netchan.Receive)
if err != nil {
   log.Fatalf("Receive Error: %v", err)
}

译者注: 了解下原理就可以了,这个包已经被 Go 团队废弃

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/the-way-to-go/1...

译文地址:https://learnku.com/docs/the-way-to-go/1...

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~