使用Jetty Websocket Client

时间:2015-04-30 20:35:19

标签: java websocket jetty-9

这是我的第一篇文章。我已经看到了这个问题的一些答案 - Jetty 8.1.1 Websocket client handshake     但使用类似的解决方案并没有帮助我。客户端连接到服务器并发送消息,但在服务器端,服务器未验证客户端(无效令牌),即使我发送正确的令牌也很困难。我无法理解我所缺少的东西。 Javascript中的相同内容正在发挥作用,但我必须在Java中实现它。

这是我的示例客户端代码。任何帮助将不胜感激。谢谢!

public class JettyWebSocketClient {

  public static void main(String[] args) throws Exception {
    JettyWebSocketClient app = new JettyWebSocketClient();
    app.test();
}

  public void test() throws Exception {
    ClientUpgradeRequest request = new ClientUpgradeRequest();
    request.setHeader("Authorization", "xyz==");
    WebSocketClient client = new WebSocketClient(new SslContextFactory());
    MyWebSocket socket = new MyWebSocket();
    client.start();
    URI destUri = new URI("wss://xyz.com:4443/ws");
    System.out.println("Connecting to " + destUri);
    client.connect(socket, destUri, request);
    socket.awaitClose(20, TimeUnit.SECONDS);
    client.stop();
  }
}

1 个答案:

答案 0 :(得分:1)

如果服务器需要Basic Authentication,则Authorization标头的值必须以“基本”开头。

尝试更改

request.setHeader("Authorization", "xyz==");

request.setHeader("Authorization", "Basic xyz==");