如何从 JavaScript 客户端向 Jetty WebSocket 发送请求头

How To Send Request Header To Jetty WebSocket From JavaScript Client

如何从 JavaScript 客户端向 Jetty WebSocket 发送请求头?


我在做什么?


在客户端。

  1. 需要在客户端的请求头中添加服务名称和服务版本
  2. 发送到服务器

在服务器端。

  1. 从请求头中识别服务
  2. 使用创建相应的输入转换器(使用 GSON)
  3. 使用该翻译器创建服务输入
  4. 调用服务。

我可以使用 org.eclipse.jetty.websocket.api.annotations.WebSocket 在服务器端获取服务名称和版本。但是..... 如何在客户端设置头部信息?

@OnWebSocketMessage
public void onText(Session session, String message) {
    if (session.isOpen()) {
        System.out.println(session.getUpgradeRequest().getHeader("service"));
        System.out.println(session.getUpgradeRequest().getHeader("version"));

        System.out.printf("Echoing back message [%s]%n", message);
        session.getRemote().sendString(message, null);
    }
}

感谢您的支持...

很遗憾,你不能。标准 WebSocket JavaScript API 不提供自定义 HTTP headers 的方法。另请参阅 heroku 开发中心的 this document