You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web PubSub使用protobuf协议通信报错:无效事件名称导致负载非法

Azure Web PubSub使用protobuf协议通信报错:无效事件名称导致负载非法

嘿,我看了你遇到的问题,这个报错的核心原因其实很明确——你发送的EventMessage没有指定必填的事件名称,Azure Web PubSub的protobuf协议要求事件名称必须是1-128字符的有效字符串,而你当前的代码里完全没设置这个字段,所以服务端判定 payload 无效,给你返回了断开连接的提示。

咱们来看代码里的具体问题:
你创建EventMessage的时候只设置了Data,但漏掉了关键的EventName字段:

UpstreamMessage dataMessage = new()
{
    EventMessage = new UpstreamMessage.Types.EventMessage()
    {
        Data = new MessageData()
        {
            TextData = "Hello from protobuf dheeraj"
        }
        // 这里缺少了必填的EventName!
    }
};

另外,如果你是要给指定群组发消息,还需要设置To字段明确目标群组;事件名称本身也得符合规则——只能包含字母、数字、下划线、连字符、点,不能是空字符串。

给你修改后的代码片段:

// Create and send data message
UpstreamMessage dataMessage = new()
{
    EventMessage = new UpstreamMessage.Types.EventMessage()
    {
        EventName = "custom-chat-message", // 这里必须指定有效的事件名称
        To = Group, // 如果要发送到指定群组,加上这个字段
        Data = new MessageData()
        {
            TextData = "Hello from protobuf dheeraj"
        }
    }
};

还有个小建议:你现在用Task.Delay来等待连接建立和群组加入完成,其实更可靠的方式是监听服务端返回的JoinGroupAck消息,确认加入群组成功后再发送数据消息,避免因为网络延迟导致消息发送失败。

总结一下解决要点:

  • 发送EventMessage时必须指定EventName,绝对不能为空
  • 如果是向特定群组发消息,记得设置To字段为目标群组名称
  • 尽量用服务端的确认消息替代固定延迟等待,提升代码稳定性

备注:内容来源于stack exchange,提问作者deathrace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:48:03