Quantcast
Channel: Ignite Realtime : Unanswered Discussions - Support
Viewing all articles
Browse latest Browse all 4979

When multiple users send room message, it found "Client is not, or no longer, connected" exception

$
0
0

HI ALL,

My openfire sever version is 3.10.0, and smack version is 4.1.0, and my openfire server machine CPU is 2.6GMZ, and the memory is 8G.

When I use one user to send room message is OK, but when I use multiple users to send room message, it sometimes will found the "Client is not, or no longer, connected" exception.

Is it possible a performance problem? but it just only 2 user. Or I have something wrong?

Please help, the problem trouble me a long time, thanks.

 

 

My Java code as follow:

I write a connectPool to keep the user connections, but it not work.

private ConcurrentHashMap<String, XMPPTCPConnection> connectPool = new ConcurrentHashMap<>();

public synchronized XMPPTCPConnection getConnection(String userName) throws Exception {

  XMPPTCPConnection connection = connectPool.get(userName);
   log.debug(String.format("connection:%s", connection));
  if (connection != null && connection.isConnected()) {

   log.debug("use old connection");
  return connection;
   }

 

   log.debug("use new connection");
   connection = createConnection(userName, defaultPassword);
   connection.connect().login();
   log.debug(String.format("connection is connect:%s", connection.isConnected()));
   connectPool.put(userName, connection);
  return connection;
}

 

private XMPPTCPConnection createConnection(String userName, String password) throws Exception {

  XMPPTCPConnectionConfiguration connectionConfig = XMPPTCPConnectionConfiguration.builder()

  .setUsernameAndPassword(userName, password)

  .setServiceName(serverName)

  .setHost(serverHost)

  .setSendPresence(false)

  .setPort(serverPort)

  .setResource(UUID.randomUUID().toString())

  .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)

  .build();
  return new XMPPTCPConnection(connectionConfig);
}

 

Send room message code as follow, I retry 3 times to send the messages, but it seem not work.

public void sendRoomMessage(String roomName, String userName, String message, int retryCount) throws Exception {

   try {

   log.debug(String.format("room name:%s, retry %d times", roomName, retryCount));
   XMPPTCPConnection connection = chatConnectionPool.getConnection(userName);
    MultiUserChatManager mucm = MultiUserChatManager.getInstanceFor(connection);

   MultiUserChat muc = mucm.getMultiUserChat(ChatUtil.fullRoomName(roomName, serverName));
   muc.leave();
   muc.createOrJoin(userName);

   // sleep to make user join to room first
   Thread.sleep(500L);
   muc.sendMessage(message);
   muc.leave();
   } catch (Exception e) {

       if (retryCount == SEND_ROOM_MESSAGE_RETRY_TIMES) throw e;
       sendRoomMessage(roomName, userName, message, ++retryCount);
   }

}

 

The log as follow:

 

2015-05-05 17:08:58,542 DEBUG service.ChatService:(ChatService.java:97)

- room name:room1_key, retry 3 times

2015-05-05 17:08:58,995 DEBUG ChatConnectionPool:(ChatConnectionPool.java:36)

- connection:org.jivesoftware.smack.tcp.XMPPTCPConnection@274d9652

2015-05-05 17:08:58,995 DEBUG ChatConnectionPool:(ChatConnectionPool.java:38)

- use old connection

2015-05-05 17:08:59,057 ERROR aspect.ControllerAspect:(ControllerAspect.java:24)

- sendRoomMessage error: Client is not, or no longer, connected

org.jivesoftware.smack.SmackException$NotConnectedException: Client is not, or no longer, connected

        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExce ptionIfDoneAndResumptionNotPossible(XMPPTCPConnection.java:1226)

        at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfApprop riate(XMPPTCPConnection.java:336)

        at org.jivesoftware.smack.AbstractXMPPConnection.sendStanza(AbstractXMPPConnection .java:609)

        at org.jivesoftware.smackx.muc.MultiUserChat.sendMessage(MultiUserChat.java:1577)

        at service.ChatService.sendRoomMessage(ChatService.java:102)


Viewing all articles
Browse latest Browse all 4979

Trending Articles