为什么getOpenSessions()返回0

时间:2016-04-11 18:07:26

标签: java websocket

我正在尝试使用java和tomcat创建一个聊天室。这里id是聊天室ID。每次我连接一个新用户,但getOpenSessions()函数返回0。 每个客户都使用以下uri

进行连接
ws://localhost:8080/websocket_implementation/chat/123

以下是打开连接的代码。

@OnOpen
        public void open(final Session session, @PathParam("id") final String id) {
    System.out.println(session.getUserProperties());

            session.getUserProperties().put("id", id);

            System.out.println(session.getOpenSessions().size());
        }

任何想法,我做错了什么?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题(Tomcat 7,Oracle Java8),它适用于localhost上的windows,但是当安装了Ubuntu的远程机器上部署时,getOpenSessions()返回0。

如果没有人知道如何修复它,所有打开的会话应该像这样手动管理,例如:

private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());

并将会话添加到onOpen集合并分别删除onСlose

答案 1 :(得分:0)

Amazon EC2 Ubuntu Server 14.04 LTS

When the app is deployed on Tomcat 7, getOpenSessions() returns 0

when deployed on jetty 9 getOpenSessions() works as expected.

好像是一个tomcat问题。