Javax.websocket Client предоставляет ложные значения в сообщенияхJAVA

Программисты JAVA общаются здесь
Anonymous
Javax.websocket Client предоставляет ложные значения в сообщениях

Сообщение Anonymous »

Я стараюсь использовать клиент javax.websocket для тестирования соединения WSS.
Чтобы установить вход, система принимает Сообщение Следуя: < /p>

Код: Выделить всё

{
"RequestType": "Login",
"Language": "en",
"Name": "QA",
"Token":"KA=="
}
Я протестировал его в почте, и все работает хорошо.

Код: Выделить всё

    public static void main(String[] args) throws DeploymentException, IOException, InterruptedException {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
TradeWebSocketClient client = new TradeWebSocketClient();
ClientEndpointConfig config = ClientEndpointConfig.Builder.create().build();
container.connectToServer(client, config, URI.create("wss://name.domain.com:8899/"));

// Send login message after connection
String loginMessage = String.format("""
{
"RequestType": "Login",
"Language": "en",
"Name": "QA",
"Token": "dLI=="
}
""");

Session session = client.getSession();
session.getBasicRemote().sendText(loginMessage);
Thread.sleep(10000);
client.getReceivedMessages().forEach(System.out::println);
}
< /code>
Основные точки TradeWebSocketCocketClient: < /p>
@ClientEndpoint
public class TradeWebSocketClient extends Endpoint {

private final List receivedMessages = new CopyOnWriteArrayList();
@Getter
private Session session;

@OnOpen
public void onOpen(Session session, EndpointConfig config) {
this.session = session;
session.addMessageHandler((MessageHandler.Whole) this::onMessageImpl);
System.out.println("✅ Connected to WebSocket");
System.out.println("Session: " + session);
}

@OnMessage
public void onMessageImpl(Object message) { //I have changed String to Object because I was getting errors when `String` tried to accept the `boolean` value
System.out.println("📨 Received: " + message);
receivedMessages.add(String.valueOf(message));
}
Итак, журналы говорят, что сеанс успешно создан, обработчик сообщений добавляется, но в результате я получаю логическое значение false . Есть журнал: < /p>

Код: Выделить всё

✅ Connected to WebSocket
Session: TyrusSession{uri=wss://name.domain.com:8899/, id='8dcda03-52af-47bf-63d5-bea247b58a81', endpointWrapper=TyrusEndpointWrapper{endpointClass=null, endpoint=org.example.TradeWebSocketClient@3df4b32a, contextPath='wss://name.domain.com:8899/', endpointPath=null, encoders=[CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpTextCoder, coder=org.glassfish.tyrus.core.coder.NoOpTextCoder@379ad06b, type=class java.lang.String}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpByteBufferCoder, coder=org.glassfish.tyrus.core.coder.NoOpByteBufferCoder@7afcc557, type=class java.nio.ByteBuffer}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpByteArrayCoder, coder=org.glassfish.tyrus.core.coder.NoOpByteArrayCoder@695f60da, type=class [B}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.ToStringEncoder, coder=org.glassfish.tyrus.core.coder.ToStringEncoder@71aae338, type=class java.lang.Object}], decoders=[CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$BooleanDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$BooleanDecoder@10d26cee, type=class java.lang.Boolean}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$ByteDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$ByteDecoder@c18d5de, type=class java.lang.Byte}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$CharacterDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$CharacterDecoder@1ed32d37, type=class java.lang.Character}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$DoubleDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$DoubleDecoder@38c6bef6, type=class java.lang.Double}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$FloatDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$FloatDecoder@3b70001c, type=class java.lang.Float}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$IntegerDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$IntegerDecoder@718c8489, type=class java.lang.Integer}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$LongDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$LongDecoder@76b1b51a, type=class java.lang.Long}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.PrimitiveDecoders$ShortDecoder, coder=org.glassfish.tyrus.core.coder.PrimitiveDecoders$ShortDecoder@7b0d8434, type=class java.lang.Short}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpTextCoder, coder=org.glassfish.tyrus.core.coder.NoOpTextCoder@40460ba9, type=class java.lang.String}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpByteBufferCoder, coder=org.glassfish.tyrus.core.coder.NoOpByteBufferCoder@557b77e4, type=class java.nio.ByteBuffer}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.NoOpByteArrayCoder, coder=org.glassfish.tyrus.core.coder.NoOpByteArrayCoder@2e990134, type=class [B}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.ReaderDecoder, coder=org.glassfish.tyrus.core.coder.ReaderDecoder@39221cf7, type=class java.io.Reader}, CoderWrapper{coderClass=class org.glassfish.tyrus.core.coder.InputStreamDecoder, coder=org.glassfish.tyrus.core.coder.InputStreamDecoder@49c94339, type=class java.io.InputStream}]}}
📨 Received: false
📨 Received: false
📨 Received: false
false
false
false
Более того, я проверил, правильно ли установлено соединение, когда я сломал токен, и да - я получаю ошибку соединения, то есть с правильным токеном соединение установлено правильно, но я понятия не имею, почему сообщения неверны.


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-messages

Вернуться в «JAVA»