예제 #1
0
 @Override
 public void run() {
   if (!connected) {
     LogUtil.log(this + ": initial timeout expired");
     notifyDisconnected();
   }
 }
예제 #2
0
 @Override
 public void start() {
   stopped = false;
   if (connected) {
     LogUtil.log("did not start SSE handler: already started.");
     return;
   }
   sseChannel = attemptSSEChannel(clientMessageBus, sseEntryPoint);
 }
예제 #3
0
  private void notifyConnected() {
    pingTimeout.cancel();
    retries = 0;

    if (!connected) {
      connected = true;
      connectedTime = System.currentTimeMillis();
      LogUtil.log(this + ": SSE channel is active.");
    }

    if (clientMessageBus.getState() == BusState.CONNECTION_INTERRUPTED) {
      clientMessageBus.setState(BusState.CONNECTED);
    }
  }
예제 #4
0
  private void notifyDisconnected() {
    connected = false;

    pingTimeout.cancel();
    LogUtil.log(this + " channel disconnected.");
    connectedTime = -1;
    clientMessageBus.setState(BusState.CONNECTION_INTERRUPTED);

    disconnect(sseChannel);

    if (!stopped) {
      retries++;
      start();
    }
  }
예제 #5
0
  @Override
  public void configure(final Message capabilitiesMessage) {
    configured = true;

    if (!isSSESupported()) {
      hosed = true;
      unsupportedReason = UNSUPPORTED_MESSAGE_NO_SERVER_SUPPORT;
      LogUtil.log("this browser does not support SSE");
      return;
    }

    this.sseEntryPoint =
        URL.encode(
                clientMessageBus.getApplicationLocation(clientMessageBus.getInServiceEntryPoint()))
            + "?z=0000&sse=1&clientId="
            + URL.encodePathSegment(clientMessageBus.getClientId());
  }