code: public void sendBroadcast(CmsUser fromUser, String message, CmsUser toUser) {
  
          if (CmsStringUtil.isEmptyOrWhitespaceOnly(message)) {
              // don't broadcast empty messages
              return;
          }
          // create the broadcast
          CmsBroadcast broadcast = new CmsBroadcast(fromUser, message);
          List<CmsSessionInfo> userSessions = getSessionInfos(toUser.getId());
          Iterator<CmsSessionInfo> i = userSessions.iterator();
          // send the broadcast to all sessions of the selected user
          while (i.hasNext()) {
              CmsSessionInfo sessionInfo = i.next();
              if (m_sessionStorageProvider.get(sessionInfo.getSessionId()) != null) {
                  // double check for concurrent modification
                  sessionInfo.getBroadcastQueue().add(broadcast);
              }
          }
      }
docs: Sends a broadcast to all sessions of a given user.<p>
  
  The user sending the message may be a real user like
  <code>cms.getRequestContext().currentUser()</code> or
  <code>null</code> for a system message.<p>
  
  @param fromUser the user sending the broadcast
  @param message the message to broadcast
  @param toUser the target (receiver) of the broadcast