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

Azure SignalR Serverless(JS)客户端:如何向Negotiate API发送JSON请求体?

SignalR JavaScript客户端发送自定义JSON请求体的实现方式

SignalR的HTTP传输(如长轮询)默认采用JSON格式传递协议数据,但IHttpConnectionOptions确实没有直接提供设置自定义请求体的配置项。要实现自定义JSON请求体,可以通过以下方式操作:

方案1:通过configureHttpClient添加请求拦截器

利用configureHttpClient配置底层HttpClient的请求拦截器,在请求发送前注入自定义JSON内容。示例代码:

const connection = new signalR.HubConnectionBuilder()
  .withUrl("https://[host]/[path]", {
    headers: {
      "Authorization": "Bearer [token]",
      "Content-Type": "application/json",
      "Accept": "application/json"
    },
    transport: signalR.HttpTransportType.LongPolling,
    configureHttpClient: (client) => {
      client.interceptors.request.use((req) => {
        // 仅针对SignalR的目标请求添加自定义体
        if (req.method === "POST" && req.url.includes("[path]")) {
          req.body = JSON.stringify({
            customKey: "customValue",
            extraData: "your payload here"
          });
        }
        return req;
      });
    }
  })
  .configureLogging(signalR.LogLevel.Trace)
  .withAutomaticReconnect()
  .build();

注意事项

SignalR的请求体遵循自身的协议规范(比如协商请求、轮询请求的内置数据),直接替换请求体可能导致服务端无法解析SignalR协议,进而连接失败。如果只是需要传递自定义参数,更稳妥的方式是:

  • 通过URL查询参数:https://[host]/[path]?param1=value1
  • 通过自定义请求头扩展(你代码中已使用Authorization头,可新增其他头字段)

IHttpConnectionOptions核心属性中文说明

IHttpConnectionOptions是SignalR JS客户端用于配置HTTP连接的核心接口,主要属性包括:

  • headers: 发送给服务器的请求头集合
  • transport: 指定使用的HTTP传输类型(长轮询、服务器发送事件等)
  • configureHttpClient: 用于配置底层HttpClient,支持添加请求/响应拦截器、修改请求配置
  • withCredentials: 跨域请求时是否携带凭证(如Cookie)
  • timeout: 连接超时时间(单位:毫秒)

该接口未提供直接设置请求体的属性,因为SignalR的请求体格式由内部协议管控,自定义请求体需通过HttpClient拦截器间接实现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:57:21