注入变量到websocket注释@ServerEndpoint(“/ myVar”)

时间:2017-07-04 14:16:51

标签: java websocket java-websocket

我聊天哪个映射到静态URL。我需要有机会为用户创造空间。

如何在app已经运行时在注释@ServerEndpoint("/myVariable")中注入变量?

class SomeClass{
    public void createRoom(User user) {
        String name = user.getName();
        //...Somehow inject name to annotation @ServerEndpoint("/name")...
    }
}

@ServerEndpoint("/chat") //May be replace to @ServerEndpoint(someGetteUserName())
public class ChatEndpoint {
    @OnMessage
    public void message(String message, Session client)
            throws IOException, EncodeException {

        for (Session peer : client.getOpenSessions()) {
            peer.getBasicRemote().sendText(message);
        }
    }
}

我不使用Spring这是明确的websocket和Glassfish。

帮我创建注释的实现变量注入。谢谢。

1 个答案:

答案 0 :(得分:1)

如果您只想创建和处理聊天室,我认为您不需要任何注入。您只需要通过独立于端点的Java代码来处理它。

我建议你:

  • 创建一个websocket服务器端点:@ServerEndpoint("/chat"/{client_id})。此客户端ID pathParam可用作会话ID。
  • 在ChatEndpoint类中,初始化一个房间列表(此列表应为static< =>所有线程之间通用)。
  • 创建处理客户和房间的业务方法(创建/删除用户,创建/删除房间,订阅房间等)。
  • 最后,在聊天消息中尝试指定房间目的地。如果您使用JSON格式,这可以非常简单。
  

message = {...,“room”:“room1”,...}