Tryus websocket client-尽管连接成功,但不会调用onMessage

Tryus websocket client-尽管连接成功,但不会调用onMessage,websocket,tyrus,Websocket,Tyrus,我正在使用tyrus成功连接到本地websocket服务器,但未调用onMessage方法。我将Fiddler设置为中间的代理,我看到服务器响应两条消息,但是它们没有在我的代码中打印出来。我或多或少地修改了sampe代码: onOpen消息被打印出来 public static void createAndConnect(String channel) { CountDownLatch messageLatch; try { messageLatch = new

我正在使用
tyrus
成功连接到本地websocket服务器,但未调用
onMessage
方法。我将Fiddler设置为中间的代理,我看到服务器响应两条消息,但是它们没有在我的代码中打印出来。我或多或少地修改了sampe代码:
onOpen
消息被打印出来

public static void createAndConnect(String channel) {

    CountDownLatch messageLatch;
    try {
        messageLatch = new CountDownLatch(1);

        final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build();
        ClientManager client = ClientManager.createClient();
        client.connectToServer(new Endpoint() {

            @Override
            public void onOpen(Session session, EndpointConfig config) {
                System.out.println("On Open and is Open " + session.isOpen());

                session.addMessageHandler((Whole<String>) message -> {
                    System.out.println("Received message: " + message);
                    messageLatch.countDown();
                });
            }
        }, cec, new URI("ws://192.168.1.248/socket.io/1/websocket/" + channel));
        messageLatch.await(5, TimeUnit.SECONDS); //I also tried increasing timeout to 30sec, doesn't help 
    } catch (Exception e) {
        e.printStackTrace();
    }

}
publicstaticvoidcreateandconnect(字符串通道){
倒计时锁存器;
试一试{
messageLatch=新的倒计时锁存器(1);
final ClientEndpointConfig cec=ClientEndpointConfig.Builder.create().build();
ClientManager client=ClientManager.createClient();
client.connectToServer(新端点(){
@凌驾
public void onOpen(会话,EndpointConfig配置){
System.out.println(“打开并且是打开的”+session.isOpen());
session.addMessageHandler((整个)消息->{
System.out.println(“接收到的消息:+消息”);
messageLatch.countDown();
});
}
},cec,新URI(“ws://192.168.1.248/socket.io/1/websocket/“+channel”);
messagelack.await(5,TimeUnit.SECONDS);//我还尝试将超时时间增加到30秒,但没有帮助
}捕获(例外e){
e、 printStackTrace();
}
}

这是一个已知的问题-如果您将lambda重写为匿名类或使用(您可以在此处使用lambda),它将起作用。

谢谢。因此,如果我理解正确,我需要将addmessage处理程序更改回匿名类?这是一个选项。或者,如果您使用的是websocket 1.1,那么您可以执行以下操作:session.addMessageHandler(String.class,(整体)message->{System.out.println(“接收到的消息:“+message”);messagelack.countDown();});
String.class
参数为我修复了它。谢谢