go - 如何响应多个 gRPC 客户端?
问题描述
我正在构建一个可以有多个 gRPC 服务器并且肯定会有多个 gRPC 客户端的应用程序,我想知道,如何在服务器端识别这是我正在与之交谈的客户端,并且只向该客户端发送数据。我正在使用双向流 RPC,现在数据被广播到每个客户端,我不希望这样。go gRPC 中的哪些功能使其成为可能,或者我如何实现它?
解决方案
有两种方法可以阅读这个问题。一种方法是将其阅读为之前回答的身份验证问题。第二种方式是我如何阅读它,作为连接/会话问题。
当客户端连接时,grpc 服务器将调用一个函数来在它自己的 goroutine 中实现调用,并且该函数将只与发起该调用的客户端对话。因此,您注册为 grpc 服务器的结构将在许多连接之间共享,但每个连接将在其自己的 goroutine 中运行,并且只会与启动它的客户端对话。这也意味着您必须确保 grpc 服务器实现是线程安全的。
您提到数据正在广播给每个客户?grpc 中没有广播,你确定这是怎么回事?
推荐阅读
- android - Expo - 运行 adb 时出错:多个设备/模拟器
- google-cloud-platform - 如何恢复 GCP 项目服务帐号
- html - 如何在 css 中构建一个 civ
- reactjs - 为不同的 Firebase 项目(环境)自定义 React 应用构建
- javascript - 当 url 错误时,为什么 createElement 中没有任何错误
- linux - 当我运行 docker-compose up 命令时,出现此错误。有人可以帮助我吗?
- ruby-on-rails - ransack + AASM:ArgumentError 参数数量错误(给定 1,预期为 0)
- php - 删除 WooCommerce 产品数据中添加的限制选项卡
- ckeditor - CKEditor 5 - img 元素上的 writer.setAttribute('title', ...) 不起作用
- mysql - 使用触发器在 MySQL 中计算列值?