如何在React客户端和AWS Websocket之间的连接中包含标头?

时间:2020-10-29 00:13:23

标签: javascript reactjs websocket aws-lambda frontend

我正在使用Reactjs开发前端。我需要连接到AWS Websocket。 Websocket的必需标头如下:

  • 授权:“承载者令牌”
  • terminalId:“ TERMINAL ID”。

我决定使用socket.io客户端(socket.io-client)。为了建立连接,我尝试了以下代码结构:

 const socket = io( URL, {
        path: "/dev",
        transports: ["false","websocket"],
        transportOptions: {
            extraHeaders: {
                Authorization: "Bearer TOKEN",
                terminalId: "ID DE TERMINAL"
            }
        },

    });
    socket.on("disconnect", () => {
        console.log("socket disconnected");
    });

我已经尝试将多余的标头从transportOption中发送出去,但是服务器日志继续显示该连接没有标头。

可能会发生什么? 是否有另一个允许附加标题的客户端?

PS:websocket在wscat中使用-H标志附加标头可以正常工作。

1 个答案:

答案 0 :(得分:0)

documentation中提到使用websocket作为您似乎正在使用的传输方式时,不会附加自定义标头。

浏览器WebSocket似乎不支持设置自定义标头,因此您有两个选择。一种方法是将身份验证通过在套接字中传递的cookie。第二个是在后端处理