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

求助:.NET向Azure WebPubSub发消息后RxJS无法接收

排查RxJS无法接收Azure WebPubSub消息的步骤

1. 确认.NET发送端与RxJS客户端的目标匹配

  • 检查.NET代码的消息发送目标:如果调用SendToGroup,RxJS客户端必须先执行group.join()加入对应分组;如果用SendToUser,要保证客户端userId和发送时指定的完全一致;如果是SendToAll,只需两端连接到同一个Hub即可。
  • 严格核对两端的Hub名称:Azure WebPubSub的Hub是消息隔离的核心标识,大小写敏感,必须完全匹配。

2. 检查RxJS客户端的消息订阅逻辑

  • 官网示例通常默认处理字符串消息,若你发送的是整数,需确认是否正确解析内容:
    // 处理整数消息的示例
    connection.on('message', (data) => {
      // 兼容字符串/原始整数两种格式
      const value = typeof data === 'string' ? parseInt(data, 10) : data;
      console.log('Received value:', value);
    });
    
  • 必须添加错误监听,避免遗漏潜在问题:
    connection.onclose((error) => {
      console.error('连接关闭:', error);
    });
    connection.onerror((error) => {
      console.error('连接错误:', error);
    });
    

3. 验证WebSocket连接的实际状态

  • 浏览器显示的pending状态并非正常状态:正常WebSocket连接建立后应显示OPEN。先确认onopen事件是否触发:
    connection.onopen(() => {
      console.log('连接已成功建立');
    });
    
  • 若始终处于pending,排查客户端URL有效性:确保生成的URL包含正确的Hub名、权限(必须包含listen权限)和有效签名。

4. 确认.NET发送端的消息是否真的送达

  • 查看Azure WebPubSub的监控日志:确认有消息流出记录,且目标与客户端匹配。
  • 在.NET代码中添加发送确认逻辑,验证请求是否被服务端接受:
    var response = await webPubSubServiceClient.SendToAllAsync(JsonSerializer.Serialize(yourInteger), contentType: "application/json");
    // 检查响应状态码是否为200/202
    

5. 排查消息格式兼容性

  • .NET直接发送原始整数时,RxJS可能无法正确解析,建议统一用JSON格式发送:
    // .NET端发送JSON格式的整数
    await webPubSubServiceClient.SendToAllAsync(JsonSerializer.Serialize(123), contentType: "application/json");
    
    客户端对应解析:
    connection.on('message', (data) => {
      const parsedValue = JSON.parse(data);
      console.log('Received integer:', parsedValue);
    });
    

内容的提问来源于stack exchange,提问作者dddd9999

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:48:18