gpt4 book ai didi

java - 有没有办法在 Java 中创建动态@ServerEndpoint 地址?

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:22 25 4
gpt4 key购买 nike

比如我有一个房间

public class Room {
private int id;
private Set<User> users;
}

所以我希望它成为我的 websocket 应用程序的端点。但是可能有很多房间,我希望每个房间都有自己的 URI(例如,rooms/1、rooms/2 等)

显然,@ServerEnpoint 注解只允许常量。那么,有什么办法可以做到吗?

最佳答案

像这样:

@ServerEndpoint(value = "/rooms/{roomnumber}")
public class....

static Map<String, Session> openSessions = ...
@OnOpen
public void onConnectionOpen(final Session session, @PathParam("roomnumber") final String roomnumber,
...
//store roomnumber in session
session.getUserProperties().put("roomnumber", roomnumber);
openSessions.put( String.valueOf(session.getId()), session )

仅向特定房间号码/客户发送消息:

// check if session corresponds to the roomnumber 
for (Map.Entry<String, Session> entry : openSessions.entrySet()) {

Session s = entry.getValue();
if (s.isOpen() && s.getUserProperties().get("roomnumber").equals(roomnumber_you_want_to_address)) {
...

当客户端断开连接时:

 @OnClose
public void onConnectionClose(Session session) {
openSessions.remove(session.getId());
}

关于java - 有没有办法在 Java 中创建动态@ServerEndpoint 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672736/

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