Package org.java_websocket.handshake

Examples of org.java_websocket.handshake.HandshakeBuilder


  }

  @Override
  public Handshakedata translateHandshake( ByteBuffer buf ) throws InvalidHandshakeException {

    HandshakeBuilder bui = translateHandshakeHttp( buf, role );
    // the first drafts are lacking a protocol number which makes them difficult to distinguish. Sec-WebSocket-Key1 is typical for draft76
    if( ( bui.hasFieldValue( "Sec-WebSocket-Key1" ) || role == Role.CLIENT ) && !bui.hasFieldValue( "Sec-WebSocket-Version" ) ) {
      byte[] key3 = new byte[ role == Role.SERVER ? 8 : 16 ];
      try {
        buf.get( key3 );
      } catch ( BufferUnderflowException e ) {
        throw new IncompleteHandshakeException( buf.capacity() + 16 );
      }
      bui.setContent( key3 );

    }
    return bui;
  }
View Full Code Here


    ByteBuffer b = readLine( buf );
    return b == null ? null : Charsetfunctions.stringAscii( b.array(), 0, b.limit() );
  }

  public static HandshakeBuilder translateHandshakeHttp( ByteBuffer buf, Role role ) throws InvalidHandshakeException , IncompleteHandshakeException {
    HandshakeBuilder handshake;

    String line = readStringLine( buf );
    if( line == null )
      throw new IncompleteHandshakeException( buf.capacity() + 128 );

    String[] firstLineTokens = line.split( " ", 3 );// eg. HTTP/1.1 101 Switching the Protocols
    if( firstLineTokens.length != 3 ) {
      throw new InvalidHandshakeException();
    }

    if( role == Role.CLIENT ) {
      // translating/parsing the response from the SERVER
      handshake = new HandshakeImpl1Server();
      ServerHandshakeBuilder serverhandshake = (ServerHandshakeBuilder) handshake;
      serverhandshake.setHttpStatus( Short.parseShort( firstLineTokens[ 1 ] ) );
      serverhandshake.setHttpStatusMessage( firstLineTokens[ 2 ] );
    } else {
      // translating/parsing the request from the CLIENT
      ClientHandshakeBuilder clienthandshake = new HandshakeImpl1Client();
      clienthandshake.setResourceDescriptor( firstLineTokens[ 1 ] );
      handshake = clienthandshake;
    }

    line = readStringLine( buf );
    while ( line != null && line.length() > 0 ) {
      String[] pair = line.split( ":", 2 );
      if( pair.length != 2 )
        throw new InvalidHandshakeException( "not an http header" );
      handshake.put( pair[ 0 ], pair[ 1 ].replaceFirst( "^ +", "" ) );
      line = readStringLine( buf );
    }
    if( line == null )
      throw new IncompleteHandshakeException();
    return handshake;
View Full Code Here

TOP

Related Classes of org.java_websocket.handshake.HandshakeBuilder

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.