gpt4 book ai didi

java - 如何将参数/属性传递给 JSR-356 WebSocket 客户端 (@ClientEndpoint)?

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:18 28 4
gpt4 key购买 nike

我想向容器实例化的 WebSocket 客户端端点添加一些附加属性以进行分组/统计。我使用 JSR-356 创建了一个客户端 WebSocket 端点:

Session session = container.connectToServer( MyClientEndpoint.class , uri );

我想将一些对象传递给SessionMyClientEndpoint实例:

@ClientEndpoint
public class MyClientEndpoint {

@OnOpen
public void onWebSocketConnect( Session sess ) {
...i need my param here...
}

... @OnMessage, @OnClose, @OnError handlers...
}

因为 MyClientEndpoint实例由容器实例化(在我的示例中 - Jetty),我不能只在构造函数中传递参数。我也无法在 Session 中设置我的参数用户属性:

Session session = container.connectToServer( ClientSocket.class , uri ); session.getUserProperties().put( "group", this);

因为我在 @OnOpen 没有属性(property)处理程序,而且我也不能保证我的 "group"属性将被设置在任何 @OnMessage 之前。调用

如何以允许我使用容器实例化的 @ClientEndpoint 对象中的其他对象的方式连接到 JSR-356 WebSocket?

最佳答案

实际上,我们并不强制对 @ClientEndpoint 实例进行容器实例化。我们可以传递我们的自定义实例:

ClientSocket socket = new ClientSocket( ANY PARAMS WE WANT );
Session session = container.connectToServer( socket , uri );

关于java - 如何将参数/属性传递给 JSR-356 WebSocket 客户端 (@ClientEndpoint)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com