Настройка пароля Jetty в учебнике по клиенту websocket - PullRequest
0 голосов
/ 05 июня 2019

Я следую учебнику , чтобы заставить клиент веб-сокета работать на Java с использованием Eclipse, но я продолжаю сталкиваться с этим сообщением всякий раз, когда пытаюсь запустить код программы:

Использование - java org.eclipse.jetty.security.Password []

Если пароль?, Пользователю будет предложено ввести пароль

Это код для клиента


public class SimpleEchoClient
{
    public static void main(String[] args)
    {
        String destUri = "ws://echo.websocket.org";
        if (args.length > 0)
        {
            destUri = args[0];
        }

        WebSocketClient client = new WebSocketClient();
        SimpleEchoSocket socket = new SimpleEchoSocket();
        try
        {
            client.start();

            URI echoUri = new URI(destUri);
            ClientUpgradeRequest request = new ClientUpgradeRequest();
            client.connect(socket,echoUri,request);
            System.out.printf("Connecting to : %s%n",echoUri);

            // wait for closed socket connection.
            socket.awaitClose(5,TimeUnit.SECONDS);
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
        finally
        {
            try
            {
                client.stop();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}

Это код для подключения к веб-сокету

@WebSocket(maxTextMessageSize = 64 * 1024)
public class SimpleEchoSocket
{
    private final CountDownLatch closeLatch;
    @SuppressWarnings("unused")
    private Session session;

    public SimpleEchoSocket()
    {
        this.closeLatch = new CountDownLatch(1);
    }

    public boolean awaitClose(int duration, TimeUnit unit) throws InterruptedException
    {
        return this.closeLatch.await(duration,unit);
    }

    @OnWebSocketClose
    public void onClose(int statusCode, String reason)
    {
        System.out.printf("Connection closed: %d - %s%n",statusCode,reason);
        this.session = null;
        this.closeLatch.countDown(); // trigger latch
    }

    @OnWebSocketConnect
    public void onConnect(Session session)
    {
        System.out.printf("Got connect: %s%n",session);
        this.session = session;
        try
        {
            Future<Void> fut;
            fut = session.getRemote().sendStringByFuture("Hello");
            fut.get(2,TimeUnit.SECONDS); // wait for send to complete.

            fut = session.getRemote().sendStringByFuture("Thanks for the conversation.");
            fut.get(2,TimeUnit.SECONDS); // wait for send to complete.

            session.close(StatusCode.NORMAL,"I'm done");
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

    @OnWebSocketMessage
    public void onMessage(String msg)
    {
        System.out.printf("Got msg: %s%n",msg);
    }
}

Кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 05 июня 2019

Этот учебник и примеры кода не имеют требований к паролю.

Сообщение, которое вы получаете, состоит в том, что вы запускаете класс org.eclipse.jetty.security.Password напрямую, а не свой код клиента websocket.

Измените способ запуска скомпилированного проекта для запуска правильного класса (исходя из этого, это будет ваш класс SimpleEchoClient, но вы не показываете пространство имен вашего пакета, так что имя класса может быть неполным)

...