我正在尝试使用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());
}
任何想法,我做错了什么?
答案 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问题。