茅断卉 发表于 2025-9-23 22:51:18

NetCore+Web客户端实现gRPC实时推送

之前出过websocket推送,sse推送,grpc的推送应该更具性价比,虽然前端要求复杂了一点点。下面快速的一步一步完成一个netcore服务端+web客户端的推送。
后端项目结构
GrpcRealtimePush/
├── Services/
│   └── ChatService.cs          # gRPC服务实现
├── Protos/
│   └── chat.proto            # Protocol Buffers定义
├── Program.cs                  # 服务启动配置
├── GrpcRealtimePush.csproj   # 项目文件
└── appsettings.json         # 配置文件
1.安装必要的grpc包
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
    <Protobuf Include="Protos\chat.proto" GrpcServices="Server" />
</ItemGroup>

<ItemGroup>
    <PackageReference Include="Grpc.AspNetCore" Version="2.64.0" />
    <PackageReference Include="Grpc.AspNetCore.Web" Version="2.64.0" />
</ItemGroup>
</Project> 
2.创建好proto文件
syntax = "proto3";

package chat;

option csharp_namespace = "GrpcRealtimePush";

// 服务定义
service ChatService {
// 服务端流式推送方法
rpc StartRealtimePush(RealtimePushRequest) returns (stream RealtimePushResponse);
}

// 请求消息
message RealtimePushRequest {
string client_id = 1;    // 客户端ID
int64 timestamp = 2;      // 时间戳
}

// 响应消息
message RealtimePushResponse {
string data = 1;          // 推送数据
int64 timestamp = 2;      // 时间戳
string data_type = 3;   // 数据类型
}proto文件定义就这样:
- **`service ChatService`**: 定义gRPC服务
- **`rpc StartRealtimePush`**: 服务端流式方法,返回 `stream`表示持续推送
- **`message`**: 定义请求和响应的数据结构
- **字段编号**: 1, 2, 3等是字段的唯一标识,用于序列化
3.实现上面的方法
using Grpc.Core;namespace GrpcRealtimePush.Services;public class ChatService : GrpcRealtimePush.ChatService.ChatServiceBase{    private readonly ILogger _logger;    public ChatService(ILogger logger)    {      _logger = logger;    }    public override async Task StartRealtimePush(RealtimePushRequest request,         IServerStreamWriter responseStream, ServerCallContext context)    {      _logger.LogInformation("
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

百里宵月 发表于 2025-10-26 14:02:36

感谢分享,下载保存了,貌似很强大

阕阵闲 发表于 2025-11-4 21:21:46

这个有用。

袂沐 发表于 2025-11-27 01:08:49

谢谢分享,试用一下

殷罗绮 发表于 2025-11-27 01:22:44

感谢分享,下载保存了,貌似很强大

讲怔 发表于 2025-12-5 02:46:02

不错,里面软件多更新就更好了

尹心菱 发表于 2025-12-5 23:38:35

感谢发布原创作品,程序园因你更精彩

瞧厨 发表于 2026-1-14 22:11:45

谢谢分享,试用一下

郜庄静 发表于 2026-1-15 01:37:53

感谢分享,学习下。

厂潺 发表于 2026-1-20 18:38:38

这个好,看起来很实用

粉押淫 发表于 2026-1-20 20:04:49

很好很强大我过来先占个楼 待编辑

髡芯 发表于 2026-1-27 06:39:59

谢谢分享,辛苦了

颖顿庐 发表于 2026-1-28 05:36:41

用心讨论,共获提升!

袋岖荤 发表于 2026-1-30 06:55:59

收藏一下   不知道什么时候能用到

采序 发表于 2026-2-2 09:21:07

这个好,看起来很实用

荡俊屯 发表于 2026-2-4 08:20:20

喜欢鼓捣这些软件,现在用得少,谢谢分享!

诈知 发表于 2026-2-6 04:48:25

谢谢分享,试用一下

厂潺 发表于 2026-2-9 05:18:35

收藏一下   不知道什么时候能用到

跟尴 发表于 2026-2-9 05:41:54

前排留名,哈哈哈

皇甫佳文 发表于 2026-2-10 15:13:00

热心回复!
页: [1] 2
查看完整版本: NetCore+Web客户端实现gRPC实时推送