From 1183f92c6a8499f5a41ca542939243673cb948d3 Mon Sep 17 00:00:00 2001 From: Ivan De Marino Date: Mon, 12 Mar 2012 18:29:35 +0000 Subject: [PATCH 1/4] Adding "timing callbacks" to the WebSocketListener. Major: Also added "bytesAmount" to the Timing WebSocketListener calls. Minor: refactored the naming of the timing calls. Minor: better determination of the "type" of data sent/received --- src/org/java_websocket/WebSocket.java | 66 +++++++++++++++++-- src/org/java_websocket/WebSocketAdapter.java | 38 +++++++++-- src/org/java_websocket/WebSocketClient.java | 9 ++- src/org/java_websocket/WebSocketListener.java | 50 ++++++++++++++ 4 files changed, 148 insertions(+), 15 deletions(-) diff --git a/src/org/java_websocket/WebSocket.java b/src/org/java_websocket/WebSocket.java index c359bf688..f1c59cb28 100644 --- a/src/org/java_websocket/WebSocket.java +++ b/src/org/java_websocket/WebSocket.java @@ -7,6 +7,7 @@ import java.nio.channels.SocketChannel; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -32,6 +33,7 @@ import org.java_websocket.handshake.ServerHandshake; import org.java_websocket.handshake.ServerHandshakeBuilder; import org.java_websocket.util.Charsetfunctions; +import org.java_websocket.WebSocketListener.MessageType; /** * Represents one end (client or server) of a single WebSocket connection. @@ -157,6 +159,8 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket * @throws InterruptedException */ /*package public*/void handleRead() throws IOException { + Date receiveThenSendStartTime = new Date(); + if( !socketBuffer.hasRemaining() ) { socketBuffer.rewind(); socketBuffer.limit( socketBuffer.capacity() ); @@ -193,6 +197,7 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket return; } } + HandshakeState handshakestate = null; socketBuffer.mark(); try { @@ -210,6 +215,9 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket ClientHandshake handshake = (ClientHandshake) tmphandshake; handshakestate = d.acceptHandshakeAsServer( handshake ); if( handshakestate == HandshakeState.MATCHED ) { + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), MessageType.HANDSHAKE, socketBuffer.limit() ); + ServerHandshakeBuilder response; try { response = wsl.onWebsocketHandshakeReceivedAsServer( this, d, handshake ); @@ -217,7 +225,16 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket closeConnection( e.getCloseCode(), e.getMessage(), false ); return; } - writeDirect( d.createHandshake( d.postProcessHandshakeResponseAsServer( handshake, response ), role ) ); + // Reset timer for sending the handshake response back + receiveThenSendStartTime = new Date(); + + // Send Handshake Response back + Handshakedata handshakeResponse = d.postProcessHandshakeResponseAsServer(handshake, response); + writeDirect( d.createHandshake( handshakeResponse, role ) ); + + // timing callback + wsl.messageSendTiming( receiveThenSendStartTime, new Date(), MessageType.HANDSHAKE, handshakeResponse.getContent() != null ? handshakeResponse.getContent().length : 0 ); + draft = d; open( handshake ); handleRead(); @@ -255,10 +272,13 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket handshakestate = draft.acceptHandshakeAsServer( handshake ); if( handshakestate == HandshakeState.MATCHED ) { + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), MessageType.HANDSHAKE, socketBuffer.limit() ); + open( handshake ); handleRead(); } else if( handshakestate != HandshakeState.MATCHING ) { - close( CloseFrame.PROTOCOL_ERROR, "the handshake did finaly not match" ); + close( CloseFrame.PROTOCOL_ERROR, "the handshake did finally not match" ); } return; } @@ -266,12 +286,15 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket draft.setParseMode( role ); Handshakedata tmphandshake = draft.translateHandshake( socketBuffer ); if( tmphandshake instanceof ServerHandshake == false ) { - closeConnection( CloseFrame.PROTOCOL_ERROR, "Wwrong http function", false ); + closeConnection( CloseFrame.PROTOCOL_ERROR, "Wrong http function", false ); return; } ServerHandshake handshake = (ServerHandshake) tmphandshake; handshakestate = draft.acceptHandshakeAsClient( handshakerequest, handshake ); if( handshakestate == HandshakeState.MATCHED ) { + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), MessageType.HANDSHAKE, socketBuffer.limit() ); + try { wsl.onWebsocketHandshakeReceivedAsClient( this, handshakerequest, handshake ); } catch ( InvalidDataException e ) { @@ -306,6 +329,9 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket code = cf.getCloseCode(); reason = cf.getMessage(); } + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), MessageType.CLOSE, socketBuffer.limit() ); + if( closeHandshakeSent ) { // complete the close handshake by disconnecting closeConnection( code, reason, true ); @@ -328,6 +354,9 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket if( f.getOpcode() == Opcode.CONTINIOUS ) { throw new InvalidFrameException( "unexpected continious frame" ); } else if( f.isFin() ) { + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), f.getOpcode() == Opcode.BINARY ? MessageType.BINARY : MessageType.TEXT, socketBuffer.limit() ); + // receive normal onframe message deliverMessage( f ); } else { @@ -337,6 +366,9 @@ private void init( WebSocketListener listener, Draft draft, SocketChannel socket } else if( f.getOpcode() == Opcode.CONTINIOUS ) { currentframe.append( f ); if( f.isFin() ) { + // timing callback + wsl.messageReceiveTiming( receiveThenSendStartTime, new Date(), f.getOpcode() == Opcode.BINARY ? MessageType.BINARY : MessageType.TEXT, socketBuffer.limit() ); + deliverMessage( currentframe ); currentframe = null; } @@ -371,19 +403,26 @@ public void close( int code, String message ) { public void closeDirect( int code, String message ) throws IOException { if( !closeHandshakeSent ) { if( handshakeComplete ) { + Date closeMessageSendStartTime = new Date(); + if( code == CloseFrame.ABNROMAL_CLOSE ) { closeConnection( code, true ); closeHandshakeSent = true; return; } flush(); + if( draft.getCloseHandshakeType() != CloseHandshakeType.NONE ) { + Framedata frameData = null; try { - sendFrameDirect( new CloseFrameBuilder( code, message ) ); + frameData = new CloseFrameBuilder( code, message ); + sendFrameDirect(frameData); } catch ( InvalidDataException e ) { wsl.onWebsocketError( this, e ); closeConnection( CloseFrame.ABNROMAL_CLOSE, "generated frame is invalid", false ); } + // timing callback + wsl.messageSendTiming( closeMessageSendStartTime, new Date(), MessageType.CLOSE, frameData.getPayloadData().length ); } else { closeConnection( code, false ); } @@ -502,17 +541,30 @@ long bufferedDataAmount() { * Empty the internal buffer, sending all the pending data before continuing. */ public void flush() throws IOException { + Date sentStartTime = new Date(); ByteBuffer buffer = this.bufferQueue.peek(); + while ( buffer != null ) { sockchannel.write( buffer ); if( buffer.remaining() > 0 ) { + // there is still stuff to send for this buffer continue; } else { + // nothing left for this buffer synchronized ( bufferQueueTotalAmount ) { // subtract this amount of data from the total queued (synchronized over this object) bufferQueueTotalAmount -= buffer.limit(); } - this.bufferQueue.poll(); // Buffer finished. Remove it. + + // timing callback + if ( isConnecting() ) { + wsl.messageSendTiming( sentStartTime, new Date(), MessageType.HANDSHAKE, buffer.limit() ); + } else if ( isOpen() ) { + // TODO - We don't have yet a way to know if we are sending "text" or "binary" at this point + wsl.messageSendTiming( sentStartTime, new Date(), MessageType.TEXT, buffer.limit() ); + } //< the "close()" message is handled slightly differently because of it's nature + + this.bufferQueue.poll(); //< Buffer finished. Remove it. buffer = this.bufferQueue.peek(); } } @@ -551,13 +603,13 @@ public void startHandshake( ClientHandshakeBuilder handshakedata ) throws Invali throw new InvalidHandshakeException( "Handshake data rejected by client." ); } - // Send - channelWrite( draft.createHandshake( this.handshakerequest, role ) ); + channelWrite( draft.createHandshake( this.handshakerequest, role ) ); //< queue to be sent } private void channelWrite( ByteBuffer buf ) throws InterruptedException { if( DEBUG ) System.out.println( "write(" + buf.limit() + "): {" + ( buf.limit() > 1000 ? "too big to display" : new String( buf.array() ) ) + "}" ); + buf.rewind(); // TODO rewinding should not be nessesary synchronized ( bufferQueueTotalAmount ) { // add up the number of bytes to the total queued (synchronized over this object) diff --git a/src/org/java_websocket/WebSocketAdapter.java b/src/org/java_websocket/WebSocketAdapter.java index b82ef68e4..0c467a055 100644 --- a/src/org/java_websocket/WebSocketAdapter.java +++ b/src/org/java_websocket/WebSocketAdapter.java @@ -11,6 +11,8 @@ import org.java_websocket.handshake.ServerHandshake; import org.java_websocket.handshake.ServerHandshakeBuilder; +import java.util.Date; + public abstract class WebSocketAdapter implements WebSocketListener { /** @@ -53,7 +55,7 @@ public void onWebsocketMessage( WebSocket conn, String message ) { /** * This default implementation does not do anything. Go ahead and overwrite it. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketOpen(WebSocket, Handshakedata) + * @see org.java_websocket.WebSocketListener#onWebsocketOpen(WebSocket, Handshakedata) */ @Override public void onWebsocketOpen( WebSocket conn, Handshakedata handshake ) { @@ -62,7 +64,7 @@ public void onWebsocketOpen( WebSocket conn, Handshakedata handshake ) { /** * This default implementation does not do anything. Go ahead and overwrite it. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketClose(WebSocket, int, String, boolean) + * @see org.java_websocket.WebSocketListener#onWebsocketClose(WebSocket, int, String, boolean) */ @Override public void onWebsocketClose( WebSocket conn, int code, String reason, boolean remote ) { @@ -71,7 +73,7 @@ public void onWebsocketClose( WebSocket conn, int code, String reason, boolean r /** * This default implementation does not do anything. Go ahead and overwrite it. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketMessage(WebSocket, byte[]) + * @see org.java_websocket.WebSocketListener#onWebsocketMessage(WebSocket, byte[]) */ @Override public void onWebsocketMessage( WebSocket conn, byte[] blob ) { @@ -81,7 +83,7 @@ public void onWebsocketMessage( WebSocket conn, byte[] blob ) { * This default implementation will send a pong in response to the received ping. * The pong frame will have the same payload as the ping frame. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketPing(WebSocket, Framedata) + * @see org.java_websocket.WebSocketListener#onWebsocketPing(WebSocket, Framedata) */ @Override public void onWebsocketPing( WebSocket conn, Framedata f ) { @@ -97,7 +99,7 @@ public void onWebsocketPing( WebSocket conn, Framedata f ) { /** * This default implementation does not do anything. Go ahead and overwrite it. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketPong(WebSocket, Framedata) + * @see org.java_websocket.WebSocketListener#onWebsocketPong(WebSocket, Framedata) */ @Override public void onWebsocketPong( WebSocket conn, Framedata f ) { @@ -124,10 +126,34 @@ public String getFlashPolicy( WebSocket conn ) { /** * This default implementation does not do anything. Go ahead and overwrite it. * - * @see @see org.java_websocket.WebSocketListener#onWebsocketError(WebSocket, Exception) + * @see org.java_websocket.WebSocketListener#onWebsocketError(WebSocket, Exception) */ @Override public void onWebsocketError( WebSocket conn, Exception ex ) { } + /** This default implementation does not do anything. Go ahead and overwrite it. + * + * @see org.java_websocket.WebSocketListener#connectTiming(Date startTime, Date endTime) + */ + @Override + public void connectTiming( Date startTime, Date endTime ) { + } + + /** This default implementation does not do anything. Go ahead and overwrite it. + * + * @see org.java_websocket.WebSocketListener#messageSendTiming(Date startTime, Date endTime, MessageType type, int bytesAmount) + */ + @Override + public void messageSendTiming( Date startTime, Date endTime, MessageType type, int bytesAmount ) { + } + + /** This default implementation does not do anything. Go ahead and overwrite it. + * + * @see org.java_websocket.WebSocketListener#messageReceiveTiming(Date startTime, Date endTime, MessageType type, int bytesAmount) + */ + @Override + public void messageReceiveTiming( Date startTime, Date endTime, MessageType type, int bytesAmount ) { + } + } diff --git a/src/org/java_websocket/WebSocketClient.java b/src/org/java_websocket/WebSocketClient.java index 8e489332c..85a57935e 100644 --- a/src/org/java_websocket/WebSocketClient.java +++ b/src/org/java_websocket/WebSocketClient.java @@ -9,6 +9,7 @@ import java.nio.channels.Selector; import java.nio.channels.SocketChannel; import java.nio.channels.UnresolvedAddressException; +import java.util.Date; import java.util.Iterator; import java.util.Set; import java.util.concurrent.locks.Lock; @@ -111,7 +112,6 @@ public void close() { selector.wakeup(); closelock.unlock(); } - } /** @@ -155,6 +155,8 @@ public void run() { } protected final void interruptableRun() { + Date connectStartTime = new Date(); + try { tryToConnect( new InetSocketAddress( uri.getHost(), getPort() ) ); } catch ( ClosedByInterruptException e ) { @@ -170,6 +172,8 @@ protected final void interruptableRun() { onWebsocketError( conn, e ); return; } + connectTiming(connectStartTime, new Date()); //< timing callback + conn = new WebSocket( this, draft, client ); try/*IO*/{ while ( !conn.isClosed() ) { @@ -364,5 +368,6 @@ public WebSocket getConnection() { public abstract void onClose( int code, String reason, boolean remote ); public abstract void onError( Exception ex ); public void onMessage( byte[] bytes ) { - }; + } + } diff --git a/src/org/java_websocket/WebSocketListener.java b/src/org/java_websocket/WebSocketListener.java index d97cd2592..d70f1f82c 100644 --- a/src/org/java_websocket/WebSocketListener.java +++ b/src/org/java_websocket/WebSocketListener.java @@ -8,6 +8,8 @@ import org.java_websocket.handshake.ServerHandshake; import org.java_websocket.handshake.ServerHandshakeBuilder; +import java.util.Date; + /** * Implemented by WebSocketClient and WebSocketServer. * The methods within are called by WebSocket. @@ -15,6 +17,8 @@ */ public interface WebSocketListener { + enum MessageType { HANDSHAKE, CLOSE, TEXT, BINARY } + /** * Called on the server side when the socket connection is first established, and the WebSocket * handshake has been received. @@ -132,4 +136,50 @@ public interface WebSocketListener { /** This method is used to inform the selector thread that there is data queued to be written to the socket. */ public void onWriteDemand( WebSocket conn ); + + /** Informs the Listener how long it took to open a socket connection + * + * @param startTime + * Time at which the socket started connecting + * + * @param endTime + * Time at which the socket connection was established + */ + public void connectTiming( Date startTime, Date endTime ); + + /** Informs the Listener how long it took to send a Message. + * This will also inform about how long it took to send the initial WebSocket HTTP Handshake. + * + * @param startTime + * Time at which it started sending a message + * + * @param endTime + * Time at which if finished sending that message + * + * @param type + * Type of message sent + * + * @param bytesAmount + * Amount of bytes sent + */ + public void messageSendTiming( Date startTime, Date endTime, MessageType type, int bytesAmount ); + + /** Informs the Listener how long it took to receive a Message. + * This will also inform about how long it took to receive the initial WebSocket HTTP Handshake. + * Time is measured from when data are ready/waiting to be read on the socket. + * + * @param startTime + * Time at which it started receiving a message + * + * @param endTime + * Time at which if finished receiving that message + * + * @param type + * Type of message sent + * + * @param bytesAmount + * Amount of bytes received + */ + public void messageReceiveTiming( Date startTime, Date endTime, MessageType type, int bytesAmount ); + } From dd03d73f25f777b3bc6e704c30839740066e79a8 Mon Sep 17 00:00:00 2001 From: Ivan De Marino Date: Wed, 21 Mar 2012 10:37:56 +0000 Subject: [PATCH 2/4] Updating build --- dist/WebSocket.jar | Bin 68985 -> 73512 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dist/WebSocket.jar b/dist/WebSocket.jar index 750656dd55e4318b6563380260c52249f8a653cf..f6719a1ff922c9728b604c7dd35088b6d43adc94 100644 GIT binary patch delta 41878 zcmZ6SV{9gD(5Sn$ZQHiZt!=wo+fQxVwr%&RZQHiC?e@IiNzRY&B$G^XXMRntjPH*u z@QOZg1SMH8a99u!Xb_NQHMc|rYJ?^=H{rL;k|BK%5D@D`QH#V%e6auC632=DuexM} z`5z0B^gRrwWRhRJ00SNB6#JvGWtImhL@H(o95Vj^dh8$=xD8ZZmS`fmN(?^P>=f1? zhA~u2_AI~Gc-GymM2JIH>*Q{OyS%eJpS{oTvri_FtqMtE6V*|)V{&o|bTjJp!&7T) zSyqbthbR+lr(0RnJhqUmT=zde2_o0LX@dnVc3Y0wX`Hw?0J5;yxFf{hW1Eq$x6KPg zJb$T%>3UiIR{f-&WZ))N)Y{jtm?t##rsu9Pq>_BPvm8fS#CjFa==rmRth??e&!)y% z<9!|(?>Qp13TiTbs6i278yxfIl$u$;7L<6`StHqegpQ*TNUhc6oo3~@{HEXBoZs&R zNXr0rTI3zl0SB)f0$U%1g}w2VGg!(qfwf+y=@}vTiXm5B91xn84Gcc~HB7|r>0MJ* zZ0>GHsT1amh8XBPDk4ElA}S&{Td1_~nLkOiTElTcJ{>|FvJo^9WRllUusA_oC+o}Z z9O?PWfO#QK*Z7iB2OCMWIl}aQyVk2)+dk`B<+5INfYnB*WYiz9@v+YM+9xL(GSVRR zZO|QPiTLp+sk{I`iG9!^tSIc;1cZ-H*p+$`j@o+C{hwG$63jjl&tHjPpe_M!O_Sz0 zx1={`7cJw?QLNzJzbYG21*OiPAv;2#^!Nz>a^Qr>I9ODf#Zw+AK0pDBL&$T;e8VD$ z#*2u=C4+@%P$^q5pUT5`rsI}`uH{Xf>A zLH-A!u&2UQ3o;OpdLV#X<%mL0BjUQx5?T*?fSS06a|X1a$|ez&1Kae-JMpW`Uayu zms_7FizImRd%r!!$6den9G~0DAD_GTMWT4YUm!;q2LbI3JcPRg2wxqUL;&}F27o7B zI_IM)nvlKA{L!nYC*Ixu9N&kNCaC==Cc@8Q0Qq*&!4Bei=!~9MeApXr0TSmQ&wQ}I zkDvZf&uo<5!oyGm%pmReV;T_1Dg+G>?GI;SdfpkbTV8b<2wV8f_}QI*QT(s>$BMt! zF9yc$oh+_kpi&O&Jbh8~5671HeE}Z)g28h(?>S(jCd~x-XK!%)w-SuKW@G6$?@?j( z&MSYu-mAeV53byOgSYlv_jTVn(SCIK%MSO@?g@O?0)GbHI<7vq?*j>bChm|rho$ts zS(v_)!N1UdM&jq#zjAm!x!S+OWeu&~O9}c9l?|WX@;tvF`%g~qJcI5&9st2%LcB&O z|A6uNooh^A@2ODVX#xF52Dh#8LO)aS-?)SgM?{DfgYNPH`ot@+Dp#0=>!CJSobtf` zFcc5T4U6*ZcAQ6*2+}{_=19~{Vo$Wi>P00c_Z~aKK3Epd2iJ-edN{H)Q7uWZk}$NF zHK+aVSk9NVCbwq^5L)730n9T(^6dNCTK*31bcRNn-5*oRv%}_sZ;wW4;b%!2BPxwl z-cG8FTtMv5i8+p^?;bzR<0&yqoZ1;>&i2Z}{)2UdKOb}RC6M>2u)ioSkAD*oYvzB5 z{S{Ij-x@8m&6+9nhz3NrCF#Z-Q{ut|L! zmAwr+0`k~zus}9R7d6#Ei1OF9KuyO$#;ikzn46CaL-7nVv?J4izu3s%dL=39(Mw%V zGtem8K#x10M=NIDr*cXYOYc(Wl<|?t;kiq!1=O;3jmUKl7Qm&}9b*v--b;Dcy$cJ#q*m_=hfE1g}zmL$H_D6$rhT zWp?&7Xfs`A2j2dQdfbFnmal|G+(AlU5o=~0Qb$@h5~+!O@yYSbzMxxOLiFfMQwxq` z{=zXLs)MOXY-`sEhL-?)eCeM&pUk=bp?09ro=#f|C4es3Tkc%VO|N~*a*)zdjA7>5 z#YfvL4RpH8D32tV^e9>K8D~%s-6$DO;SF4$!=SCJVn5F`#o$4OIxW8}Lt_(}_mi7!rnjm3VxaH_9(K2G! zMb+6}0-U%lD#mM|VQDznNZo33glQ&d;W)1_W?$K)?4e(=A1nYbvb4e)PRF&bB6FYR zuxx)pBXXM7`{Zqn3{ofSCJ79BNA<|=xFOu?XeMM(%1}y(YLAcnvbXh!i8<#ELJzfX z`@|mJrrU{K6n*;bYuVM4*L86mHA43%R!75W06<_{;!f)LTiSGNQMTsu}oY@w))(0IA9sC?R-HN-ilE>(~a%dtDipQziN{8%## z6hKIJu4?R9H=@gsak!%m0hTim z1Xcw^MXt4d@(L=Vs!d{lp4>_3Woy zSjZIbT~+G00*|U)>dDF4=QULl065tg7`CQS*9D&RIbd2rk+Q|6-t8O5#3|T%xRtKP z1H*X>Kg3N1I2foDgALQO$iZ6;VKup%!T3geQpLf6S2eRGh^wiVj*?F}oGBp~3x+ao z_Dm2n0XWnVWPsvqP*DRemD>!0(j|@#u_v<{=6y*KeS#CaFvrYddBR9h0E_@{%Tm_g zMQNBKUW8?VLC2U!js$J*pp&F_&#H0|O1c}#Ok=wuvjO$?Ng%b^af?VxvLQW3Lb<>( z7bwEX6tf}$Tk>~@PJLu7LF&IU;aZ=t@It+$(CN{8>fDs{qT#dqOvInlF~B~Xd`@LF zhDj;n-Y^pH7qrmDJ>T^TU?H+1TKzs6QRvB(=qp{gfbm~QNcCTFS8ZhI4vj|9%y-cc z;~nnBB&V^=aQubUi<(dWL8sqWSEU)5!ZFf%Lb^vg%Mn*Hble0 zwJvU{nw0~%cNMI&Atv&TxJ+%VvqDX*GgT_5Uk1g|Zik}(g_sU$fL@I$1>^h(#UZP_ zUR^XDFttld5$PRE_J>wqkD;zmZdJRsY%9qb5A2@~YmJ<~9$nqi$cx;MjuY6%*ZEgW z^SHjKKR`0JoP_LnuHp$CueVM;gn)NxX(aZLQlEXvYElwUTKA7@4`Mx)T0wNSQ)8UG zblJV-wW6mXR(pglfTK|vD;sFn)uF##c*M((_sg|rKt+E$^4rY`i^-$eiiEi^y1xOW zEutGG%(WO%f1B)fWyFvFum1xG$>uPOrI{ZcXbaq&7A`D@#WL528Ko(S=Eb2%W2$fr zV_RgnG!%VB_=vlHOB82_Q+V#1+XHm+df?jCp>m@tR(#|bz^w;)4b^^e1dV=HU!0I> zRMz!6m?nfV4qi!>-eC6_!ON;Y)mWO=v@@DBq=xgT#o`fV*e)rZVhUa{AvVNTVvMI| z)WV4*GiuIZ+D2~D%G}ecl8=nFW>z&_`R<{!XIC9Zuz#bTuh&iV0ys8=?Tw}wRqp!G zvQDs@WzpaS5E9eKMR8o?g4h{^CYpXG)#sI*V;d#Li1#{!%zUa18c9&qXR3_g#(iGL(nq&P2T``)I;rqD%5 z!OEnt^8YI<7_4L5H7oayKJ$*w^vovoL}8>rA(;>YES|Ao+V;1N1RYJv8IExR(pcT8H+jIQ59_fLdy zE*U-=ybN`y5P{J_q@d86r_(bpy8+ zs|Y_(6b*0+=nq;B(QK*{MDw^hbaA~n+`}jNA?qvfTsI$KU6Nwp8h%7&eKiW3!ZYGe zP(E`1)B^9BWg5}!de^xo`6bCKn+U#Lj(4gGXr?XJ7@cI9{-@(i4U@^L{VD7E5UW)i z?J(le^=|Mb+y>NmDSns15{fo_f1vY{l?k4kn;1e5L%g}ifhZpbg&jI`9tjM{PfAWU z)|5mG#w81D00E%&|1qg&e0AFYs$Z{<20KKOZ@KcMF=RvF=B`?Na1K?O_D(xf|LVX5 z&~PF0FJ~s#5sM{N_-Y!sbO9s8x&<6#2_(DlE#0Kw^l(-$1{JH3NAY*#KuJEC6;O+| zJA$4ix`~^xH>>!%3Cj}{pYc)1(MrvRUIGndmESBWyJj84@?>{*@^`PpGCS-b-tm7V~#c#JagJ zmC`mD#vzHPaLlVnPuFo`-37m=SU<~z#%x&UTVmIxd8rsj@_R4hW->6X%`jBZW~uY% z!e=Z~#8cBA^MJ~{&Qo2pyq5wt*i7MB;=I$kKt(*LW7?oMMz}&RsW5OYRVo{g2d}H? zKIp6qS{Jr_rX~BRbb$w*^Akrc0 zaE~Du@^FQRX4uIx%~{$EF@N?xDNU9I<22}!jPi!3X)((=XX_ofqIk<=Wta53;XJv` zFX(;;yzhiZ? z$A8!J$&vApD)`teCZ+-?)>Im<_ZjMjd1bC50q(tu7QaxLktX(Vo(%|jo{_f9H7(hW zgB?$P%JJiY9Nmr2%zHcA1%zcJM5k4lu9JbrIW7^vG&2d6r*pvaV38Hp&1kawupaPlnCPALxhZu``7KDM0riK8W3XBu|vILMN<^Ng_ zbrlU2!Tu!fCvZzo>ijW`v=oeK)7h#hER^{x436n->XAN=C=-UFptv`M7-U+#>K^}e zFCkRO=T=AAX@krZH$EOlrq{yMCq_xON4F$$YDTTy} z>?uY*cYjCHbGnj-K`U^`>UZ!~hYzV4JHLBMdb%JA)f?e~{v68gl^GCL;OnRsTIxTa z8B2*W^gsMzELAqS(=raNuZ!UDauAcwB6**`-Dik(0tb{{%up3fDlHBb5U|v<*(_+F z=FPh>MR#=*?9NahQLZs2_eVQ;{&f|uZAx;nDyKcNDPJ6>YBpcIEFO+@qGEpol&06U zYdcBipVv~yHu$@xY*)e>3$OVn;?*tldd#EkKbzVt!d->vi0N4j#I?}29>^ngA-A~3H)4uG-KiIys zJAr$I*dL9w{^I_-11Rl(DE>)z`3G1Z|1kWM@Ai!AzZy>j-|IQ-g}w;_gh0Gs&d`{u z@CN(4Q+~kx^pR-4p%SuJATvsBp$3sciEK2!$N)xLh)&ua1nmCn%}p-OTg3j=U!jyg zkB`(km;<<^%A%#63E)(sL=~Z~j$)AX!HJHX#{)d$s%AK7g$PIQQiW=ZR)gado#Z4} z*T5RmkLYrq3Ph|-di!gV=y7@rJFqc#>2YuD=QH9=Lq1}ZLL5x9n~)NlR)nPX;Mo_x zLV%_l-t+D+g4UY75-IbXI-*-vFm`0T(sQC|CG*UIlU*y4SyH)^ z)&(s~>{VfrxRllzHO5Q@iBD?7;tgEiJOGB^j)|04V9oYTg5(gc62The#g?&An#(*H zvnL-s2@1S*XiTW~#+ETPj5ju1mUw~0wF&n6g%`&9z76Uq2Qx@rY1fqzI?gtBM_`)2 z>GC6`&Q!J)gF}%y8k&4INM8i2t!O=DECbVQA6i&4tz-%=f9y7hCQfOwmNI2|F+hhT zS!gL{Zovd?SxMQ4FsaF#Zm+5~VFeUJZwYo|i`cTc=4YrP-)!Z~KJ4H*Q8=xY$J@-N z#6`4Y6*X~Cqj{zkVU&HCW{cQ?DuyC%jAyKU2)x+Kgbx3PpYl=W_!hkTX&n>035`-6 zuQfSVvu~pup==)H%<0)G^hnp37O)bH@H?roPKFYUYIjlKrWzX&8-9@s(p)?A@3ieu9gvePo8pG zZB2`01>xemA*wA>`sk~hbwg9JPJHr``XpY8acU>uEC7S?;bd*2qerKf1)#S#L2QsQPHsQbEuKeUl}N%?0W&vv&_}PS`pA zF2`BC=G#{bIU}B+7gzwTY644}53!~lOJ;BST58f6G>@_Zkv-y(-iF~=ncd{9*fMvu z4J`82g_E0U&(zCyZ;vFE12~*OS^Ckji%&cG)6w79=IZMHTQ{jtNDq3PkEqo%o@}IV zk4AUVj-a<>kdKXE`BXBIQ=NHf5hgNN&_A^;&u&hf4Yv!Un)Z?pm27UHpAO=h9%2oK z_}k2eHzm(W+qG22Vg&WBW@NY7v}ju+ud9{4&~qAwkW!A=9lv*v1yFGPZHmPU*F_87?#jw(F zC=*`P#B~bxrE3yn0kAb#uyM<W<%Daho9;pJ4-?3TK4jenL#Wz@5W&sdRytW1S9(*TL ze1k9^%4OT|fZ_=%%0a_@@O9AU1A8s#H(`WrIR6eLjlpklJi?F{@?pF}1kR!2nXzNJs#*qAx#rrflpo*p_*P|Er@UwxIjpznIR!L4FYH7IsXxR%th-X*ko@xrd zocgFKK**f+RkO@EOC{)H(iXo&?ZC(!22nZ9I1F{5aMA|9tY#2p@`GEY6E|MPen{?w zWLm@BH184rl$yz??h!Fgd3U67GMroC1AmOp$1&&;fv}d+wC@rqV?&fv^EyUj!<$zS zH)L%?f?3hrpj10Z>V~7B8LU-P2gJFw$*D8|1T-&CHHh~jT2{C3>%E}RYkC|+UQTJ1 z_C-If#5)E4rC?NfGiv?I#@O~N&rJ2+OcylI@hlP#wdtXEoFx|9oSO)(n>(AV;+7D60&@Tv8qY9Q(I1RoNep2 zJfw6}NJ5CJ&2VZKbBHOREO*q0DiatLz~a!Vp_+~)M7yOhN>x*g%)%7Wiu?(V8EY&k zmfeXcuGlW2DsIpc9?`a6)B#_ynWm&V-YMu;+R-)TYRlL!1z<7EOIE|idFU8+0}deg z=yli@A^wJIxzPINI9inS-1I|0W_aQz`KdNcA(?6pneZM1j3 zeb1m_;q3VW7xOOM6~Xd4bnsJ{d@0NrId&b1pEuJz>C?E!%o`J}(V}2AGihhHs|_oR zwbIWF9%_K59h1BT26y&vaH*0gVCT_A^;J~V=CZ(jJfwp;*KFc~{&J{@4ab)18+f^3 zJV^8Ep79D0q4r}sZ?V0_TP@PVm_7Bww-Z@Sww^9@w6=|2U4#s2r}b-Ebb)4T4=}(S z{i}Q8PZ9S@b~WMd^_KkmlW>5J7_mOcGpYtrPto1Cwe`p;!J+g(Z+A%;K=kKsNotd8 zQUzzDz0q$;IK@iKo=T850?$-dF56&Vgbzp3Hb4XNXU4HG({ySvvRNLSaq&bW zet|WxuEtfuK45XthhQBX5ZTho%qjk$9fTKASkD>ig9G2V92d^IiOa-VdP)`!+Jng6 zLzqO3ReC7T44rMvZ66@lgClvwkPwYWLc}%r;K?^V#8&{XYenNBO0f$e>&WIw?NK}2 zePGf9RR{dE`ma9U4nq=!vk(5HDHo9Av4i>*E!8M*V@ey@m}HRzP>y`h45e~LCqbwK zdZ80!)aRy!x$EF=;*=KJI$nn_EZ$1WXc{-COLEF)srCC^8*wJuF4+;(RHIhQUHy%r zq)HCtA-8DFOsty>$7?aS3&qnZXb0bb>@cl$6>;8_{87XgG-R+5r8lZ^?zqAIiO=kH4J`u*NnQXA7=Lji+Yfc+IEoP zktcs$6i(Ne+H;}LoNhE@9ZQI$pDCxHQQ>_k*qj;sli-}u}dH7G92}uat3S~TTUryU|VV(eeWoSEZR^NBBU6qnT(RDi| zQ_Gl{%Te++k=h$A0)_n}EYkkcK_ApnW(%DE+061MGgfq8oe1^^AMhBw+VAfa6r1(q5`C2E>u4MfX&eridE!;Vl>vvY?FW!mmGd=i%3;&uaH0L)tIHRo7M+24JeAKJxn~LyAH8~pY^~`2jJ%&@N+l# z-XFKi!peWNNam@y7QV5v1DD{Wzt!1nM&IAL-Ze%*@?P94MA# z;c37*Q0~x}MeG-%BaXLxdhW!(Q8VkNKt3b3MaZd!ai3b6qmJ-%igK3cefF|M;KZnp zeDQC+IKkv|&p1}rDt>sU+Ii=E3{ZF#Yvqz56o`-VF^eI4X0R_X<+D`aw&D7G+w_cA z94Qxsk0_=GQ^^=mm!z)L4{1(a|J5~(hYG+kZFt5x+wJ1f9zbR|vy)qPTeR%2$OeDw zdYDA^w#3SZR808BDds&!n64!NZ*VK-)j@DjRr>v0+j0$~1X>F8rcoPjCm9qymzbIb z>Bffj8*!9IBQwgthAAGQ9!Jq;4&)4GlVDVfYHZMo38rKr)QFCB%;m?D zf4M1hyXSWqe?LV-^*mIVZyN+d3KMcTo6G#-`BUiZ%bCAEWMqRqKKi*YIp6%DmMo=5 z+)(^x>%w8)k;= zBYWA;x5ON?1}{XMe*m3xvf0>4DH=>!8s#R9${8FCU+|xPwQ#EP3zlP7!HEmdq@~cG zcxO_3GUu-G$&30-9)Scq!gawuZG!@YnaMQWeksqV_UPitp6l^MdmFWQf_ri<#RPwT z^2zvoR^K=4DUtR;dzkUO!c$8Ri56l9l#!8wXjy6Kbd~ka7(mfE2D(Ijh)yHnEV8DQ zHKh>@Nx(2e2{P1W!=M;i?FwVji+)UcMs?4;-ig`7@i;YQe)BC>o6$I=o=|qQ zuW}%CGb&!x)p%!pxSSK%aTFfS^B(%hzFG9(1UEjERDqmDc#9j2fkj!Z3}uQ8t9uYr z>(G?q5FL{H5P*pD3cpwE5VJ!@v~Lz=3o!64JMs<_(v6rp)<(13s0T zuW~hCO{P=z!`H^Jzg#WZd>BTJ_;!VbH?VzsY)RrTz#LkJvW=I#q1~7EG8Fh6u%UVj zscZ7YB~;=E@XXV*_wQ7AIX&@q1N!A?2nZW$G7}ja08JhJp8_tg9kdcHL=Y{5 zLiTh>ri}FnoWXsZ2a%r(gW*VcLt4$r;|5Xbt&2rcm}{2IVE8nT%j?PKtl;Ohz{h94 z&_8fTSfQ|a&^jZ*kN|8fQD~D!6x=kREl&u16YMiGt}*p^XahkH;1}136>K3!P;8H< zzV!eDOC7D2>U~?#7W~V1R^3K0yc(`?4ieY{_yIs{&8%8%Zq+;j@sevtdv6CM`e|>XT*Kk#d zV9pw=b!WEGyf%_S%=A%0f3# zWaN!8RZKwCw#o~*#ndE*O)dwu0$Hsv_ROP{KSzo!*^7dURkgoCV<||)<}_k(vL?r4 z&ETEY#*eGa&z+MvY#Vu}9GAx)wi{fNr?F+i2Da~u3$say z!=~a!{--6?LwGwYL9b zy4+GhlwaNJvmsJqgn2+cYl~-;HK1tVF-4%(`~*b>fGa)HQ)_O5rJnt!-Zz!gX1jvU z=_)6m3hR2-k>?)Ly|b0>r~xfH_zAzYBP-CGMpo*WL!Ci}&K|8=p8Zg&#DQ#@W$yC0 zW)QZ3l|J!DwnJ5yi)wU&BU@KYn~aHem(WAkzLE)&DTVpbA}Zdd$e~@0^UUBE&ZywE zCAYRNfFMCz%XTA|vv_})S#WfRS#YpCrPbIsjBojOwP6*rAlBEb`f15l5)R~F z)iPu4g_cBh4uPy>ZNc?=3)a!vimcztMnz9$iLu6AsV1YP z;}mficb*>dO`z^9yZh!;#9A+GRx+tEm4y7ZjeDF+Gxyw7Qw_?^Dpts))FB`g01Pkw z1+1CDtyp|S>dR%aw}Mx3hx6*u4y4M16uB!UG;oeqW2?GxC#)YCPb$GFJK?NY*y|7BNFekx+VepFp-Ki~5WEKuY;^goo>)bCKF0;h=Y@ zzA1k{e?RAUDVPujiOy+z=aWs~k^4lKI3!&|nm6ifUjO=wU@A_jQUat^F~Jy=&?D7| zb#;@Zk#_4Ked4=k>V%_>p!1X&1Wdt>4xq}hdVJOd&QHTXLN;C~Ln z*A+Y%w|j~Ma(5uEX$vX?c4lUtbp}*ZH6PkSHm@?$3J|-M;OqCRh_<@>Y|%2(Yz;?Z z@|%6Kxx2&G^eoq`DRX8Poj%BK6tl_gO4(StMR4{5s#3;Dt&{(O2nqcXW(J|TV35Cn zVqdb2n>~1etDV39CD=9p_y0>85+EtW)yNre z1{vrnH1w7TdKlV3aO4E&^�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 Y`1lSRGJ>s{+BNc+6fQ93e^BrK2TMsY{r~^~ From 8e32fc118f4f2044ddda66fadb2d2f3d0f626a37 Mon Sep 17 00:00:00 2001 From: Ivan De Marino Date: Wed, 21 Mar 2012 10:38:40 +0000 Subject: [PATCH 3/4] Updating the Doc --- doc/allclasses-frame.html | 82 +- doc/allclasses-noframe.html | 82 +- doc/constant-values.html | 220 ++- doc/deprecated-list.html | 4 +- doc/help-doc.html | 4 +- doc/index-all.html | 1378 ++++++++++------- doc/index.html | 2 +- doc/net/tootallnate/websocket/Draft.html | 669 -------- .../tootallnate/websocket/FramedataImpl1.html | 504 ------ doc/net/tootallnate/websocket/WebSocket.html | 656 -------- .../websocket/WebSocketAdapter.html | 524 ------- .../websocket/WebSocketClient.html | 639 -------- .../websocket/WebSocketServer.html | 823 ---------- .../websocket/drafts/Draft_10.html | 544 ------- .../websocket/drafts/Draft_17.html | 335 ---- .../websocket/drafts/Draft_75.html | 585 ------- .../websocket/drafts/Draft_76.html | 443 ------ .../websocket/drafts/package-frame.html | 38 - .../websocket/exeptions/package-frame.html | 40 - .../tootallnate/websocket/package-frame.html | 84 - doc/org/java_websocket/WebSocket.Role.html | 323 ++++ doc/org/java_websocket/WebSocket.html | 903 +++++++++++ doc/org/java_websocket/WebSocketAdapter.html | 665 ++++++++ doc/org/java_websocket/WebSocketClient.html | 872 +++++++++++ .../WebSocketListener.MessageType.html | 355 +++++ doc/org/java_websocket/WebSocketListener.html | 598 +++++++ doc/org/java_websocket/WebSocketServer.html | 842 ++++++++++ .../drafts/Draft.CloseHandshakeType.html} | 84 +- .../drafts}/Draft.HandshakeState.html | 52 +- doc/org/java_websocket/drafts/Draft.html | 722 +++++++++ doc/org/java_websocket/drafts/Draft_10.html | 566 +++++++ doc/org/java_websocket/drafts/Draft_17.html | 335 ++++ doc/org/java_websocket/drafts/Draft_75.html | 683 ++++++++ doc/org/java_websocket/drafts/Draft_76.html | 512 ++++++ .../java_websocket/drafts/package-frame.html | 53 + .../drafts/package-summary.html | 189 +++ .../java_websocket/drafts}/package-tree.html | 53 +- .../IncompleteHandshakeException.html | 58 +- .../exeptions/InvalidDataException.html | 319 ++++ .../exeptions/InvalidFrameException.html | 77 +- .../exeptions/InvalidHandshakeException.html | 77 +- .../exeptions/LimitExedeedException.html | 103 +- .../exeptions/NotSendableException.html} | 104 +- .../exeptions/package-frame.html | 42 + .../exeptions/package-summary.html | 62 +- .../exeptions/package-tree.html | 56 +- .../java_websocket/framing/CloseFrame.html | 586 +++++++ .../framing/CloseFrameBuilder.html | 452 ++++++ .../java_websocket/framing}/FrameBuilder.html | 55 +- .../framing}/Framedata.Opcode.html | 64 +- .../java_websocket/framing}/Framedata.html | 46 +- .../framing/FramedataImpl1.html | 600 +++++++ .../java_websocket/framing/package-frame.html | 60 + .../framing}/package-summary.html | 88 +- .../java_websocket/framing/package-tree.html | 172 ++ .../handshake/ClientHandshake.html | 225 +++ .../handshake/ClientHandshakeBuilder.html | 240 +++ .../handshake}/HandshakeBuilder.html | 81 +- .../handshake/HandshakeImpl1Client.html | 309 ++++ .../handshake/HandshakeImpl1Server.html | 350 +++++ .../handshake}/Handshakedata.html | 68 +- .../handshake}/HandshakedataImpl1.html | 158 +- .../handshake/ServerHandshake.html | 247 +++ .../handshake/ServerHandshakeBuilder.html | 262 ++++ .../handshake/package-frame.html | 57 + .../handshake/package-summary.html | 197 +++ .../handshake/package-tree.html | 173 +++ doc/org/java_websocket/package-frame.html | 62 + doc/org/java_websocket/package-summary.html | 201 +++ doc/org/java_websocket/package-tree.html | 171 ++ .../util}/Base64.InputStream.html | 52 +- .../util}/Base64.OutputStream.html | 60 +- .../java_websocket/util}/Base64.html | 140 +- .../util}/Charsetfunctions.html | 131 +- .../java_websocket/util/package-frame.html | 38 + .../java_websocket/util}/package-summary.html | 66 +- .../java_websocket/util}/package-tree.html | 64 +- doc/overview-frame.html | 16 +- doc/overview-summary.html | 22 +- doc/overview-tree.html | 68 +- doc/package-list | 9 +- doc/serialized-form.html | 53 +- 82 files changed, 14431 insertions(+), 7573 deletions(-) delete mode 100644 doc/net/tootallnate/websocket/Draft.html delete mode 100644 doc/net/tootallnate/websocket/FramedataImpl1.html delete mode 100644 doc/net/tootallnate/websocket/WebSocket.html delete mode 100644 doc/net/tootallnate/websocket/WebSocketAdapter.html delete mode 100644 doc/net/tootallnate/websocket/WebSocketClient.html delete mode 100644 doc/net/tootallnate/websocket/WebSocketServer.html delete mode 100644 doc/net/tootallnate/websocket/drafts/Draft_10.html delete mode 100644 doc/net/tootallnate/websocket/drafts/Draft_17.html delete mode 100644 doc/net/tootallnate/websocket/drafts/Draft_75.html delete mode 100644 doc/net/tootallnate/websocket/drafts/Draft_76.html delete mode 100644 doc/net/tootallnate/websocket/drafts/package-frame.html delete mode 100644 doc/net/tootallnate/websocket/exeptions/package-frame.html delete mode 100644 doc/net/tootallnate/websocket/package-frame.html create mode 100644 doc/org/java_websocket/WebSocket.Role.html create mode 100644 doc/org/java_websocket/WebSocket.html create mode 100644 doc/org/java_websocket/WebSocketAdapter.html create mode 100644 doc/org/java_websocket/WebSocketClient.html create mode 100644 doc/org/java_websocket/WebSocketListener.MessageType.html create mode 100644 doc/org/java_websocket/WebSocketListener.html create mode 100644 doc/org/java_websocket/WebSocketServer.html rename doc/{net/tootallnate/websocket/WebSocket.Role.html => org/java_websocket/drafts/Draft.CloseHandshakeType.html} (69%) rename doc/{net/tootallnate/websocket => org/java_websocket/drafts}/Draft.HandshakeState.html (79%) create mode 100644 doc/org/java_websocket/drafts/Draft.html create mode 100644 doc/org/java_websocket/drafts/Draft_10.html create mode 100644 doc/org/java_websocket/drafts/Draft_17.html create mode 100644 doc/org/java_websocket/drafts/Draft_75.html create mode 100644 doc/org/java_websocket/drafts/Draft_76.html create mode 100644 doc/org/java_websocket/drafts/package-frame.html create mode 100644 doc/org/java_websocket/drafts/package-summary.html rename doc/{net/tootallnate/websocket => org/java_websocket/drafts}/package-tree.html (52%) rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/IncompleteHandshakeException.html (71%) create mode 100644 doc/org/java_websocket/exeptions/InvalidDataException.html rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/InvalidFrameException.html (63%) rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/InvalidHandshakeException.html (63%) rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/LimitExedeedException.html (61%) rename doc/{net/tootallnate/websocket/exeptions/InvalidDataException.html => org/java_websocket/exeptions/NotSendableException.html} (58%) create mode 100644 doc/org/java_websocket/exeptions/package-frame.html rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/package-summary.html (56%) rename doc/{net/tootallnate/websocket => org/java_websocket}/exeptions/package-tree.html (53%) create mode 100644 doc/org/java_websocket/framing/CloseFrame.html create mode 100644 doc/org/java_websocket/framing/CloseFrameBuilder.html rename doc/{net/tootallnate/websocket => org/java_websocket/framing}/FrameBuilder.html (67%) rename doc/{net/tootallnate/websocket => org/java_websocket/framing}/Framedata.Opcode.html (71%) rename doc/{net/tootallnate/websocket => org/java_websocket/framing}/Framedata.html (72%) create mode 100644 doc/org/java_websocket/framing/FramedataImpl1.html create mode 100644 doc/org/java_websocket/framing/package-frame.html rename doc/{net/tootallnate/websocket => org/java_websocket/framing}/package-summary.html (52%) create mode 100644 doc/org/java_websocket/framing/package-tree.html create mode 100644 doc/org/java_websocket/handshake/ClientHandshake.html create mode 100644 doc/org/java_websocket/handshake/ClientHandshakeBuilder.html rename doc/{net/tootallnate/websocket => org/java_websocket/handshake}/HandshakeBuilder.html (65%) create mode 100644 doc/org/java_websocket/handshake/HandshakeImpl1Client.html create mode 100644 doc/org/java_websocket/handshake/HandshakeImpl1Server.html rename doc/{net/tootallnate/websocket => org/java_websocket/handshake}/Handshakedata.html (72%) rename doc/{net/tootallnate/websocket => org/java_websocket/handshake}/HandshakedataImpl1.html (53%) create mode 100644 doc/org/java_websocket/handshake/ServerHandshake.html create mode 100644 doc/org/java_websocket/handshake/ServerHandshakeBuilder.html create mode 100644 doc/org/java_websocket/handshake/package-frame.html create mode 100644 doc/org/java_websocket/handshake/package-summary.html create mode 100644 doc/org/java_websocket/handshake/package-tree.html create mode 100644 doc/org/java_websocket/package-frame.html create mode 100644 doc/org/java_websocket/package-summary.html create mode 100644 doc/org/java_websocket/package-tree.html rename doc/{net/tootallnate/websocket => org/java_websocket/util}/Base64.InputStream.html (78%) rename doc/{net/tootallnate/websocket => org/java_websocket/util}/Base64.OutputStream.html (79%) rename doc/{net/tootallnate/websocket => org/java_websocket/util}/Base64.html (83%) rename doc/{net/tootallnate/websocket => org/java_websocket/util}/Charsetfunctions.html (62%) create mode 100644 doc/org/java_websocket/util/package-frame.html rename doc/{net/tootallnate/websocket/drafts => org/java_websocket/util}/package-summary.html (57%) rename doc/{net/tootallnate/websocket/drafts => org/java_websocket/util}/package-tree.html (54%) diff --git a/doc/allclasses-frame.html b/doc/allclasses-frame.html index a30104b82..1c44fb745 100644 --- a/doc/allclasses-frame.html +++ b/doc/allclasses-frame.html @@ -2,12 +2,12 @@ - + All Classes - + @@ -21,59 +21,83 @@ - diff --git a/doc/allclasses-noframe.html b/doc/allclasses-noframe.html index 3dd807a22..e7a29efdd 100644 --- a/doc/allclasses-noframe.html +++ b/doc/allclasses-noframe.html @@ -2,12 +2,12 @@ - + All Classes - + @@ -21,59 +21,83 @@
Base64 +Base64
-Base64.InputStream +Base64.InputStream
-Base64.OutputStream +Base64.OutputStream
-Charsetfunctions +Charsetfunctions
-Draft +ClientHandshake
-Draft.HandshakeState +ClientHandshakeBuilder
-Draft_10 +CloseFrame
-Draft_17 +CloseFrameBuilder
-Draft_75 +Draft
-Draft_76 +Draft.CloseHandshakeType
-FrameBuilder +Draft.HandshakeState
-Framedata +Draft_10
-Framedata.Opcode +Draft_17
-FramedataImpl1 +Draft_75
-HandshakeBuilder +Draft_76
-Handshakedata +FrameBuilder
-HandshakedataImpl1 +Framedata
-IncompleteHandshakeException +Framedata.Opcode
-InvalidDataException +FramedataImpl1
-InvalidFrameException +HandshakeBuilder
-InvalidHandshakeException +Handshakedata
-LimitExedeedException +HandshakedataImpl1
-WebSocket +HandshakeImpl1Client
-WebSocket.Role +HandshakeImpl1Server
-WebSocketAdapter +IncompleteHandshakeException
-WebSocketClient +InvalidDataException
-WebSocketServer +InvalidFrameException +
+InvalidHandshakeException +
+LimitExedeedException +
+NotSendableException +
+ServerHandshake +
+ServerHandshakeBuilder +
+WebSocket +
+WebSocket.Role +
+WebSocketAdapter +
+WebSocketClient +
+WebSocketListener +
+WebSocketListener.MessageType +
+WebSocketServer
- diff --git a/doc/constant-values.html b/doc/constant-values.html index 030a41ecb..57255c284 100644 --- a/doc/constant-values.html +++ b/doc/constant-values.html @@ -2,12 +2,12 @@ - + Constant Field Values - + @@ -84,14 +84,14 @@


Contents - +

Base64 +Base64
-Base64.InputStream +Base64.InputStream
-Base64.OutputStream +Base64.OutputStream
-Charsetfunctions +Charsetfunctions
-Draft +ClientHandshake
-Draft.HandshakeState +ClientHandshakeBuilder
-Draft_10 +CloseFrame
-Draft_17 +CloseFrameBuilder
-Draft_75 +Draft
-Draft_76 +Draft.CloseHandshakeType
-FrameBuilder +Draft.HandshakeState
-Framedata +Draft_10
-Framedata.Opcode +Draft_17
-FramedataImpl1 +Draft_75
-HandshakeBuilder +Draft_76
-Handshakedata +FrameBuilder
-HandshakedataImpl1 +Framedata
-IncompleteHandshakeException +Framedata.Opcode
-InvalidDataException +FramedataImpl1
-InvalidFrameException +HandshakeBuilder
-InvalidHandshakeException +Handshakedata
-LimitExedeedException +HandshakedataImpl1
-WebSocket +HandshakeImpl1Client
-WebSocket.Role +HandshakeImpl1Server
-WebSocketAdapter +IncompleteHandshakeException
-WebSocketClient +InvalidDataException
-WebSocketServer +InvalidFrameException +
+InvalidHandshakeException +
+LimitExedeedException +
+NotSendableException +
+ServerHandshake +
+ServerHandshakeBuilder +
+WebSocket +
+WebSocket.Role +
+WebSocketAdapter +
+WebSocketClient +
+WebSocketListener +
+WebSocketListener.MessageType +
+WebSocketServer
+org.java_websocket.*
-net.tootallnate.*
@@ -99,55 +99,73 @@

- + - - - + + - - - + + - - - + + - - - + + - - - + + + + + +
net.tootallnate.websocket.Base64org.java_websocket.WebSocket
+ public static final intDECODE0DEFAULT_PORT80
+ public static final intDO_BREAK_LINES8READY_STATE_CLOSED3
+ public static final intDONT_GUNZIP4READY_STATE_CLOSING2
+ public static final intENCODE1READY_STATE_CONNECTING0
+ public static final intGZIP2READY_STATE_OPEN1
+ +

+ +

+ + + + - - - + + + - - - + + + - - - + + + + + + + + @@ -159,13 +177,85 @@

org.java_websocket.drafts.Draft_75
-public static final intNO_OPTIONS0 +public static final byteCR13
-public static final intORDERED32 +public static final byteEND_OF_FRAME-1
-public static final intURL_SAFE16 +public static final byteLF10
+public static final byteSTART_OF_FRAME0
- + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -177,32 +267,56 @@

net.tootallnate.websocket.WebSocketorg.java_websocket.framing.CloseFrame
+ public static final intDEFAULT_PORT80ABNROMAL_CLOSE1006
+public static final intBUGGYCLOSE-2
+public static final intEXTENSION1010
+public static final intFLASHPOLICY-3
+public static final intGOING_AWAY1001
+public static final intNEVERCONNECTED-1
+public static final intNO_UTF81007
+public static final intNOCODE1005
+public static final intNORMAL1000
+public static final intPOLICY_VALIDATION1008
+public static final intPROTOCOL_ERROR1002
+public static final intREFUSE1003
+public static final intTOOBIG1009
- + - - - + + + - - - + + + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + +
net.tootallnate.websocket.drafts.Draft_75org.java_websocket.util.Base64
-public static final byteCR13 +public static final intDECODE0
-public static final byteEND_OF_FRAME-1 +public static final intDO_BREAK_LINES8
-public static final byteLF10 +public static final intDONT_GUNZIP4
-public static final byteSTART_OF_FRAME +public static final intENCODE1
+public static final intGZIP2
+public static final intNO_OPTIONS 0
+public static final intORDERED32
+public static final intURL_SAFE16
diff --git a/doc/deprecated-list.html b/doc/deprecated-list.html index 638b6f30b..a64c56ce6 100644 --- a/doc/deprecated-list.html +++ b/doc/deprecated-list.html @@ -2,12 +2,12 @@ - + Deprecated List - + diff --git a/doc/help-doc.html b/doc/help-doc.html index cbd483c58..e07973f5f 100644 --- a/doc/help-doc.html +++ b/doc/help-doc.html @@ -2,12 +2,12 @@ - + API Help - + diff --git a/doc/index-all.html b/doc/index-all.html index d9bac5a00..8c3be44c9 100644 --- a/doc/index-all.html +++ b/doc/index-all.html @@ -2,12 +2,12 @@ - + Index - + @@ -77,836 +77,1131 @@ -A B C D E F G H I K L N O P R S T U V W


+A B C D E F G H I K L M N O P R S T U V W

A

-
abort() - -Method in class net.tootallnate.websocket.WebSocket +
ABNROMAL_CLOSE - +Static variable in interface org.java_websocket.framing.CloseFrame +
1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. +
acceptHandshakeAsClient(ClientHandshake, ServerHandshake) - +Method in class org.java_websocket.drafts.Draft
  -
abort(String) - -Method in class net.tootallnate.websocket.WebSocket +
acceptHandshakeAsClient(ClientHandshake, ServerHandshake) - +Method in class org.java_websocket.drafts.Draft_10
  -
acceptHandshakeAsClient(Handshakedata, Handshakedata) - -Method in class net.tootallnate.websocket.Draft +
acceptHandshakeAsClient(ClientHandshake, ServerHandshake) - +Method in class org.java_websocket.drafts.Draft_75
  -
acceptHandshakeAsClient(Handshakedata, Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
acceptHandshakeAsClient(ClientHandshake, ServerHandshake) - +Method in class org.java_websocket.drafts.Draft_76
  -
acceptHandshakeAsClient(Handshakedata, Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
acceptHandshakeAsServer(ClientHandshake) - +Method in class org.java_websocket.drafts.Draft
  -
acceptHandshakeAsClient(Handshakedata, Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_76 +
acceptHandshakeAsServer(ClientHandshake) - +Method in class org.java_websocket.drafts.Draft_10
  -
acceptHandshakeAsServer(Handshakedata) - -Method in class net.tootallnate.websocket.Draft +
acceptHandshakeAsServer(ClientHandshake) - +Method in class org.java_websocket.drafts.Draft_17
  -
acceptHandshakeAsServer(Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
acceptHandshakeAsServer(ClientHandshake) - +Method in class org.java_websocket.drafts.Draft_75
  -
acceptHandshakeAsServer(Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_17 +
acceptHandshakeAsServer(ClientHandshake) - +Method in class org.java_websocket.drafts.Draft_76
  -
acceptHandshakeAsServer(Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
append(Framedata) - +Method in interface org.java_websocket.framing.Framedata
  -
acceptHandshakeAsServer(Handshakedata) - -Method in class net.tootallnate.websocket.drafts.Draft_76 +
append(Framedata) - +Method in class org.java_websocket.framing.FramedataImpl1
  -
append(Framedata) - -Method in interface net.tootallnate.websocket.Framedata -
  -
append(Framedata) - -Method in class net.tootallnate.websocket.FramedataImpl1 -
  -
asciiBytes(String) - -Static method in class net.tootallnate.websocket.Charsetfunctions +
asciiBytes(String) - +Static method in class org.java_websocket.util.Charsetfunctions
 

B

-
Base64 - Class in net.tootallnate.websocket
Encodes and decodes to and from Base64 notation.
Base64.InputStream - Class in net.tootallnate.websocket
A Base64.InputStream will read data from another +
Base64 - Class in org.java_websocket.util
Encodes and decodes to and from Base64 notation.
Base64.InputStream - Class in org.java_websocket.util
A Base64.InputStream will read data from another java.io.InputStream, given in the constructor, - and encode/decode to/from Base64 notation on the fly.
Base64.InputStream(InputStream) - -Constructor for class net.tootallnate.websocket.Base64.InputStream -
Constructs a Base64.InputStream in DECODE mode. -
Base64.InputStream(InputStream, int) - -Constructor for class net.tootallnate.websocket.Base64.InputStream -
Constructs a Base64.InputStream in + and encode/decode to/from Base64 notation on the fly.
Base64.InputStream(InputStream) - +Constructor for class org.java_websocket.util.Base64.InputStream +
Constructs a Base64.InputStream in DECODE mode. +
Base64.InputStream(InputStream, int) - +Constructor for class org.java_websocket.util.Base64.InputStream +
Constructs a Base64.InputStream in either ENCODE or DECODE mode. -
Base64.OutputStream - Class in net.tootallnate.websocket
A Base64.OutputStream will write data to another +
Base64.OutputStream - Class in org.java_websocket.util
A Base64.OutputStream will write data to another java.io.OutputStream, given in the constructor, - and encode/decode to/from Base64 notation on the fly.
Base64.OutputStream(OutputStream) - -Constructor for class net.tootallnate.websocket.Base64.OutputStream -
Constructs a Base64.OutputStream in ENCODE mode. -
Base64.OutputStream(OutputStream, int) - -Constructor for class net.tootallnate.websocket.Base64.OutputStream -
Constructs a Base64.OutputStream in + and encode/decode to/from Base64 notation on the fly.
Base64.OutputStream(OutputStream) - +Constructor for class org.java_websocket.util.Base64.OutputStream +
Constructs a Base64.OutputStream in ENCODE mode. +
Base64.OutputStream(OutputStream, int) - +Constructor for class org.java_websocket.util.Base64.OutputStream +
Constructs a Base64.OutputStream in either ENCODE or DECODE mode. -
basicAccept(Handshakedata) - -Method in class net.tootallnate.websocket.Draft +
basicAccept(Handshakedata) - +Method in class org.java_websocket.drafts.Draft +
  +
BUGGYCLOSE - +Static variable in interface org.java_websocket.framing.CloseFrame
 

C

-
Charsetfunctions - Class in net.tootallnate.websocket
 
Charsetfunctions() - -Constructor for class net.tootallnate.websocket.Charsetfunctions +
Charsetfunctions - Class in org.java_websocket.util
 
Charsetfunctions() - +Constructor for class org.java_websocket.util.Charsetfunctions
  -
checkAlloc(int) - -Method in class net.tootallnate.websocket.Draft +
checkAlloc(int) - +Method in class org.java_websocket.drafts.Draft
  -
close() - -Method in class net.tootallnate.websocket.Base64.OutputStream +
ClientHandshake - Interface in org.java_websocket.handshake
 
ClientHandshakeBuilder - Interface in org.java_websocket.handshake
 
close() - +Method in class org.java_websocket.util.Base64.OutputStream
Flushes and closes (I think, in the superclass) the stream. -
close() - -Method in class net.tootallnate.websocket.WebSocket -
Closes the underlying SocketChannel, and calls the listener's onClose - event handler. -
close() - -Method in class net.tootallnate.websocket.WebSocketClient -
Calls close on the underlying SocketChannel, which in turn - closes the socket connection, and ends the client socket thread. -
connect() - -Method in class net.tootallnate.websocket.WebSocketClient +
close(int, String) - +Method in class org.java_websocket.WebSocket +
sends the closing handshake. +
close(int) - +Method in class org.java_websocket.WebSocket +
  +
close(InvalidDataException) - +Method in class org.java_websocket.WebSocket +
  +
close() - +Method in class org.java_websocket.WebSocketClient +
  +
closeConnection(int, String, boolean) - +Method in class org.java_websocket.WebSocket +
closes the socket no matter if the closing handshake completed. +
closeConnection(int, boolean) - +Method in class org.java_websocket.WebSocket +
  +
closeDirect(int, String) - +Method in class org.java_websocket.WebSocket +
  +
CloseFrame - Interface in org.java_websocket.framing
 
CloseFrameBuilder - Class in org.java_websocket.framing
 
CloseFrameBuilder() - +Constructor for class org.java_websocket.framing.CloseFrameBuilder +
  +
CloseFrameBuilder(int) - +Constructor for class org.java_websocket.framing.CloseFrameBuilder +
  +
CloseFrameBuilder(int, String) - +Constructor for class org.java_websocket.framing.CloseFrameBuilder +
  +
codingErrorAction - +Static variable in class org.java_websocket.util.Charsetfunctions +
  +
connect() - +Method in class org.java_websocket.WebSocketClient
Starts a background thread that attempts and maintains a WebSocket connection to the URI specified in the constructor or via setURI. -
connections() - -Method in class net.tootallnate.websocket.WebSocketServer +
connections() - +Method in class org.java_websocket.WebSocketServer
Returns a WebSocket[] of currently connected clients. -
CR - -Static variable in class net.tootallnate.websocket.drafts.Draft_75 +
connectTiming(Date, Date) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
connectTiming(Date, Date) - +Method in interface org.java_websocket.WebSocketListener +
Informs the Listener how long it took to open a socket connection +
CR - +Static variable in class org.java_websocket.drafts.Draft_75
The byte representing CR, or Carriage Return, or \r -
createBinaryFrame(Framedata) - -Method in class net.tootallnate.websocket.Draft +
createBinaryFrame(Framedata) - +Method in class org.java_websocket.drafts.Draft
  -
createBinaryFrame(Framedata) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
createBinaryFrame(Framedata) - +Method in class org.java_websocket.drafts.Draft_10
  -
createBinaryFrame(Framedata) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
createBinaryFrame(Framedata) - +Method in class org.java_websocket.drafts.Draft_75
  -
createChallenge(String, String, byte[]) - -Static method in class net.tootallnate.websocket.drafts.Draft_76 +
createBinaryFrame(Framedata) - +Method in class org.java_websocket.drafts.Draft_76
  -
createFrames(byte[], boolean) - -Method in class net.tootallnate.websocket.Draft +
createChallenge(String, String, byte[]) - +Static method in class org.java_websocket.drafts.Draft_76
  -
createFrames(String, boolean) - -Method in class net.tootallnate.websocket.Draft +
createFrames(byte[], boolean) - +Method in class org.java_websocket.drafts.Draft
  -
createFrames(byte[], boolean) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
createFrames(String, boolean) - +Method in class org.java_websocket.drafts.Draft
  -
createFrames(String, boolean) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
createFrames(byte[], boolean) - +Method in class org.java_websocket.drafts.Draft_10
  -
createFrames(byte[], boolean) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
createFrames(String, boolean) - +Method in class org.java_websocket.drafts.Draft_10
  -
createFrames(String, boolean) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
createFrames(byte[], boolean) - +Method in class org.java_websocket.drafts.Draft_75
  -
createHandshake(Handshakedata, WebSocket.Role) - -Method in class net.tootallnate.websocket.Draft +
createFrames(String, boolean) - +Method in class org.java_websocket.drafts.Draft_75
  -
createHandshake(Handshakedata, WebSocket.Role, boolean) - -Method in class net.tootallnate.websocket.Draft +
createHandshake(Handshakedata, WebSocket.Role) - +Method in class org.java_websocket.drafts.Draft +
  +
createHandshake(Handshakedata, WebSocket.Role, boolean) - +Method in class org.java_websocket.drafts.Draft +
  +
currentFrame - +Variable in class org.java_websocket.drafts.Draft_75
 

D

-
DEBUG - -Static variable in class net.tootallnate.websocket.WebSocket +
DEBUG - +Static variable in class org.java_websocket.WebSocket
  -
DECODE - -Static variable in class net.tootallnate.websocket.Base64 +
DECODE - +Static variable in class org.java_websocket.util.Base64
Specify decoding in first bit. -
decode(byte[]) - -Static method in class net.tootallnate.websocket.Base64 +
decode(byte[]) - +Static method in class org.java_websocket.util.Base64
Low-level access to decoding ASCII characters in the form of a byte array. -
decode(byte[], int, int, int) - -Static method in class net.tootallnate.websocket.Base64 +
decode(byte[], int, int, int) - +Static method in class org.java_websocket.util.Base64
Low-level access to decoding ASCII characters in the form of a byte array. -
decode(String) - -Static method in class net.tootallnate.websocket.Base64 +
decode(String) - +Static method in class org.java_websocket.util.Base64
Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it. -
decode(String, int) - -Static method in class net.tootallnate.websocket.Base64 +
decode(String, int) - +Static method in class org.java_websocket.util.Base64
Decodes data from Base64 notation, automatically detecting gzip-compressed data and decompressing it. -
decodeFileToFile(String, String) - -Static method in class net.tootallnate.websocket.Base64 +
decodeFileToFile(String, String) - +Static method in class org.java_websocket.util.Base64
Reads infile and decodes it to outfile. -
decodeFromFile(String) - -Static method in class net.tootallnate.websocket.Base64 +
decodeFromFile(String) - +Static method in class org.java_websocket.util.Base64
Convenience method for reading a base64-encoded file and decoding it. -
decodeToFile(String, String) - -Static method in class net.tootallnate.websocket.Base64 +
decodeToFile(String, String) - +Static method in class org.java_websocket.util.Base64
Convenience method for decoding data to a file. -
decodeToObject(String) - -Static method in class net.tootallnate.websocket.Base64 +
decodeToObject(String) - +Static method in class org.java_websocket.util.Base64
Attempts to decode Base64 data and deserialize a Java Object within. -
decodeToObject(String, int, ClassLoader) - -Static method in class net.tootallnate.websocket.Base64 +
decodeToObject(String, int, ClassLoader) - +Static method in class org.java_websocket.util.Base64
Attempts to decode Base64 data and deserialize a Java Object within. -
DEFAULT_PORT - -Static variable in class net.tootallnate.websocket.WebSocket +
DEFAULT_PORT - +Static variable in class org.java_websocket.WebSocket
The default port of WebSockets, as defined in the spec. -
DO_BREAK_LINES - -Static variable in class net.tootallnate.websocket.Base64 +
DO_BREAK_LINES - +Static variable in class org.java_websocket.util.Base64
Do break lines when encoding. -
DONT_GUNZIP - -Static variable in class net.tootallnate.websocket.Base64 +
DONT_GUNZIP - +Static variable in class org.java_websocket.util.Base64
Specify that gzipped data should not be automatically gunzipped. -
Draft - Class in net.tootallnate.websocket
 
Draft() - -Constructor for class net.tootallnate.websocket.Draft +
Draft - Class in org.java_websocket.drafts
Base class for everything of a websocket specification which is not common such as the way the handshake is read or frames are transfered.
Draft() - +Constructor for class org.java_websocket.drafts.Draft
  -
Draft.HandshakeState - Enum in net.tootallnate.websocket
 
Draft_10 - Class in net.tootallnate.websocket.drafts
 
Draft_10() - -Constructor for class net.tootallnate.websocket.drafts.Draft_10 +
Draft.CloseHandshakeType - Enum in org.java_websocket.drafts
 
Draft.HandshakeState - Enum in org.java_websocket.drafts
 
Draft_10 - Class in org.java_websocket.drafts
 
Draft_10() - +Constructor for class org.java_websocket.drafts.Draft_10
  -
Draft_17 - Class in net.tootallnate.websocket.drafts
 
Draft_17() - -Constructor for class net.tootallnate.websocket.drafts.Draft_17 +
Draft_17 - Class in org.java_websocket.drafts
 
Draft_17() - +Constructor for class org.java_websocket.drafts.Draft_17
  -
Draft_75 - Class in net.tootallnate.websocket.drafts
 
Draft_75() - -Constructor for class net.tootallnate.websocket.drafts.Draft_75 +
Draft_75 - Class in org.java_websocket.drafts
 
Draft_75() - +Constructor for class org.java_websocket.drafts.Draft_75
  -
Draft_76 - Class in net.tootallnate.websocket.drafts
 
Draft_76() - -Constructor for class net.tootallnate.websocket.drafts.Draft_76 +
Draft_76 - Class in org.java_websocket.drafts
 
Draft_76() - +Constructor for class org.java_websocket.drafts.Draft_76
 

E

-
ENCODE - -Static variable in class net.tootallnate.websocket.Base64 +
emptyarray - +Static variable in class org.java_websocket.framing.FramedataImpl1 +
  +
ENCODE - +Static variable in class org.java_websocket.util.Base64
Specify encoding in first bit. -
encode(ByteBuffer, ByteBuffer) - -Static method in class net.tootallnate.websocket.Base64 +
encode(ByteBuffer, ByteBuffer) - +Static method in class org.java_websocket.util.Base64
Performs Base64 encoding on the raw ByteBuffer, writing it to the encoded ByteBuffer. -
encode(ByteBuffer, CharBuffer) - -Static method in class net.tootallnate.websocket.Base64 +
encode(ByteBuffer, CharBuffer) - +Static method in class org.java_websocket.util.Base64
Performs Base64 encoding on the raw ByteBuffer, writing it to the encoded CharBuffer. -
encodeBytes(byte[]) - -Static method in class net.tootallnate.websocket.Base64 +
encodeBytes(byte[]) - +Static method in class org.java_websocket.util.Base64
Encodes a byte array into Base64 notation. -
encodeBytes(byte[], int) - -Static method in class net.tootallnate.websocket.Base64 +
encodeBytes(byte[], int) - +Static method in class org.java_websocket.util.Base64
Encodes a byte array into Base64 notation. -
encodeBytes(byte[], int, int) - -Static method in class net.tootallnate.websocket.Base64 +
encodeBytes(byte[], int, int) - +Static method in class org.java_websocket.util.Base64
Encodes a byte array into Base64 notation. -
encodeBytes(byte[], int, int, int) - -Static method in class net.tootallnate.websocket.Base64 +
encodeBytes(byte[], int, int, int) - +Static method in class org.java_websocket.util.Base64
Encodes a byte array into Base64 notation. -
encodeBytesToBytes(byte[]) - -Static method in class net.tootallnate.websocket.Base64 -
Similar to Base64.encodeBytes(byte[]) but returns +
encodeBytesToBytes(byte[]) - +Static method in class org.java_websocket.util.Base64 +
Similar to Base64.encodeBytes(byte[]) but returns a byte array instead of instantiating a String. -
encodeBytesToBytes(byte[], int, int, int) - -Static method in class net.tootallnate.websocket.Base64 -
Similar to Base64.encodeBytes(byte[], int, int, int) but returns +
encodeBytesToBytes(byte[], int, int, int) - +Static method in class org.java_websocket.util.Base64 +
Similar to Base64.encodeBytes(byte[], int, int, int) but returns a byte array instead of instantiating a String. -
encodeFileToFile(String, String) - -Static method in class net.tootallnate.websocket.Base64 +
encodeFileToFile(String, String) - +Static method in class org.java_websocket.util.Base64
Reads infile and encodes it to outfile. -
encodeFromFile(String) - -Static method in class net.tootallnate.websocket.Base64 +
encodeFromFile(String) - +Static method in class org.java_websocket.util.Base64
Convenience method for reading a binary file and base64-encoding it. -
encodeObject(Serializable) - -Static method in class net.tootallnate.websocket.Base64 +
encodeObject(Serializable) - +Static method in class org.java_websocket.util.Base64
Serializes an object and returns the Base64-encoded version of that serialized object. -
encodeObject(Serializable, int) - -Static method in class net.tootallnate.websocket.Base64 +
encodeObject(Serializable, int) - +Static method in class org.java_websocket.util.Base64
Serializes an object and returns the Base64-encoded version of that serialized object. -
encodeToFile(byte[], String) - -Static method in class net.tootallnate.websocket.Base64 +
encodeToFile(byte[], String) - +Static method in class org.java_websocket.util.Base64
Convenience method for encoding data to a file. -
END_OF_FRAME - -Static variable in class net.tootallnate.websocket.drafts.Draft_75 +
END_OF_FRAME - +Static variable in class org.java_websocket.drafts.Draft_75
The byte representing the end of a WebSocket text frame. +
EXTENSION - +Static variable in interface org.java_websocket.framing.CloseFrame +
1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake.

F

-
flushBase64() - -Method in class net.tootallnate.websocket.Base64.OutputStream +
fin - +Variable in class org.java_websocket.framing.FramedataImpl1 +
  +
FLASH_POLICY_REQUEST - +Static variable in class org.java_websocket.drafts.Draft +
  +
FLASHPOLICY - +Static variable in interface org.java_websocket.framing.CloseFrame +
  +
flush() - +Method in class org.java_websocket.WebSocket +
Empty the internal buffer, sending all the pending data before continuing. +
flush() - +Method in class org.java_websocket.WebSocketClient +
  +
flushBase64() - +Method in class org.java_websocket.util.Base64.OutputStream
Method added by PHIL. -
FrameBuilder - Interface in net.tootallnate.websocket
 
Framedata - Interface in net.tootallnate.websocket
 
Framedata.Opcode - Enum in net.tootallnate.websocket
 
FramedataImpl1 - Class in net.tootallnate.websocket
 
FramedataImpl1() - -Constructor for class net.tootallnate.websocket.FramedataImpl1 +
FrameBuilder - Interface in org.java_websocket.framing
 
Framedata - Interface in org.java_websocket.framing
 
Framedata.Opcode - Enum in org.java_websocket.framing
 
FramedataImpl1 - Class in org.java_websocket.framing
 
FramedataImpl1() - +Constructor for class org.java_websocket.framing.FramedataImpl1
  -
FramedataImpl1(Framedata.Opcode) - -Constructor for class net.tootallnate.websocket.FramedataImpl1 +
FramedataImpl1(Framedata.Opcode) - +Constructor for class org.java_websocket.framing.FramedataImpl1
  -
FramedataImpl1(Framedata) - -Constructor for class net.tootallnate.websocket.FramedataImpl1 +
FramedataImpl1(Framedata) - +Constructor for class org.java_websocket.framing.FramedataImpl1
 

G

-
getAddress() - -Method in class net.tootallnate.websocket.WebSocketServer +
getAddress() - +Method in class org.java_websocket.WebSocketServer +
  +
getBufferedAmount() - +Method in class org.java_websocket.WebSocketClient +
Amount of data buffered/queued but not sent yet. +
getCloseCode() - +Method in exception org.java_websocket.exeptions.InvalidDataException +
  +
getCloseCode() - +Method in interface org.java_websocket.framing.CloseFrame +
  +
getCloseCode() - +Method in class org.java_websocket.framing.CloseFrameBuilder +
  +
getCloseHandshakeType() - +Method in class org.java_websocket.drafts.Draft
  -
getContent() - -Method in interface net.tootallnate.websocket.Handshakedata +
getCloseHandshakeType() - +Method in class org.java_websocket.drafts.Draft_10
  -
getContent() - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
getCloseHandshakeType() - +Method in class org.java_websocket.drafts.Draft_75
  -
getDraft() - -Method in class net.tootallnate.websocket.WebSocketClient +
getCloseHandshakeType() - +Method in class org.java_websocket.drafts.Draft_76
  -
getDraft() - -Method in class net.tootallnate.websocket.WebSocketServer +
getConnection() - +Method in class org.java_websocket.WebSocketClient
  -
getFieldValue(String) - -Method in interface net.tootallnate.websocket.Handshakedata +
getContent() - +Method in interface org.java_websocket.handshake.Handshakedata
  -
getFieldValue(String) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
getContent() - +Method in class org.java_websocket.handshake.HandshakedataImpl1
  -
getFlashPolicy(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
getDraft() - +Method in class org.java_websocket.WebSocketClient +
Returns the protocol version this client uses. +
getDraft() - +Method in class org.java_websocket.WebSocketServer +
  +
getFieldValue(String) - +Method in interface org.java_websocket.handshake.Handshakedata +
  +
getFieldValue(String) - +Method in class org.java_websocket.handshake.HandshakedataImpl1 +
  +
getFlashPolicy(WebSocket) - +Method in class org.java_websocket.WebSocketAdapter
Gets the XML string that should be returned if a client requests a Flash security policy. -
getFlashSecurityPolicy() - -Method in class net.tootallnate.websocket.WebSocketServer +
getFlashPolicy(WebSocket) - +Method in interface org.java_websocket.WebSocketListener
Gets the XML string that should be returned if a client requests a Flash security policy. -
getHttpStatusMessage() - -Method in interface net.tootallnate.websocket.Handshakedata +
getFlashSecurityPolicy() - +Method in class org.java_websocket.WebSocketServer +
Gets the XML string that should be returned if a client requests a Flash + security policy. +
getHttpStatus() - +Method in class org.java_websocket.handshake.HandshakeImpl1Server +
  +
getHttpStatus() - +Method in interface org.java_websocket.handshake.ServerHandshake
  -
getHttpStatusMessage() - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
getHttpStatusMessage() - +Method in class org.java_websocket.handshake.HandshakeImpl1Server
  -
getLocalSocketAddress() - -Method in class net.tootallnate.websocket.WebSocket +
getHttpStatusMessage() - +Method in interface org.java_websocket.handshake.ServerHandshake
  -
getOpcode() - -Method in interface net.tootallnate.websocket.Framedata +
getLocalSocketAddress() - +Method in class org.java_websocket.WebSocket
  -
getOpcode() - -Method in class net.tootallnate.websocket.FramedataImpl1 +
getMessage() - +Method in interface org.java_websocket.framing.CloseFrame
  -
getPayloadData() - -Method in interface net.tootallnate.websocket.Framedata +
getMessage() - +Method in class org.java_websocket.framing.CloseFrameBuilder
  -
getPayloadData() - -Method in class net.tootallnate.websocket.FramedataImpl1 +
getOpcode() - +Method in interface org.java_websocket.framing.Framedata
  -
getPort() - -Method in class net.tootallnate.websocket.WebSocketServer +
getOpcode() - +Method in class org.java_websocket.framing.FramedataImpl1 +
  +
getPayloadData() - +Method in class org.java_websocket.framing.CloseFrameBuilder +
  +
getPayloadData() - +Method in interface org.java_websocket.framing.Framedata +
  +
getPayloadData() - +Method in class org.java_websocket.framing.FramedataImpl1 +
  +
getPort() - +Method in class org.java_websocket.WebSocketServer
Gets the port number that this server listens on. -
getRemoteSocketAddress() - -Method in class net.tootallnate.websocket.WebSocket +
getReadyState() - +Method in class org.java_websocket.WebSocket +
Retrieve the WebSocket 'readyState'. +
getReadyState() - +Method in class org.java_websocket.WebSocketClient +
Retrieve the WebSocket 'readyState'. +
getRemoteSocketAddress() - +Method in class org.java_websocket.WebSocket
  -
getResourceDescriptor() - -Method in interface net.tootallnate.websocket.Handshakedata +
getResourceDescriptor() - +Method in interface org.java_websocket.handshake.ClientHandshake
  -
getResourceDescriptor() - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
getResourceDescriptor() - +Method in class org.java_websocket.handshake.HandshakeImpl1Client
  -
getTransfereMasked() - -Method in interface net.tootallnate.websocket.Framedata +
getTransfereMasked() - +Method in interface org.java_websocket.framing.Framedata
  -
getTransfereMasked() - -Method in class net.tootallnate.websocket.FramedataImpl1 +
getTransfereMasked() - +Method in class org.java_websocket.framing.FramedataImpl1
  -
getURI() - -Method in class net.tootallnate.websocket.WebSocketClient +
getURI() - +Method in class org.java_websocket.WebSocketClient
Gets the URI that this WebSocketClient is connected to. -
GZIP - -Static variable in class net.tootallnate.websocket.Base64 +
GOING_AWAY - +Static variable in interface org.java_websocket.framing.CloseFrame +
1001 indicates that an endpoint is "going away", such as a server + going down, or a browser having navigated away from a page. +
GZIP - +Static variable in class org.java_websocket.util.Base64
Specify that data should be gzip-compressed in second bit.

H

-
handleRead() - -Method in class net.tootallnate.websocket.WebSocket -
Should be called when a Selector has a key that is writable for this - WebSocket's SocketChannel connection. -
handleWrite() - -Method in class net.tootallnate.websocket.WebSocket +
HandshakeBuilder - Interface in org.java_websocket.handshake
 
Handshakedata - Interface in org.java_websocket.handshake
 
HandshakedataImpl1 - Class in org.java_websocket.handshake
 
HandshakedataImpl1() - +Constructor for class org.java_websocket.handshake.HandshakedataImpl1 +
  +
HandshakeImpl1Client - Class in org.java_websocket.handshake
 
HandshakeImpl1Client() - +Constructor for class org.java_websocket.handshake.HandshakeImpl1Client
  -
HandshakeBuilder - Interface in net.tootallnate.websocket
 
Handshakedata - Interface in net.tootallnate.websocket
 
HandshakedataImpl1 - Class in net.tootallnate.websocket
 
HandshakedataImpl1() - -Constructor for class net.tootallnate.websocket.HandshakedataImpl1 +
HandshakeImpl1Server - Class in org.java_websocket.handshake
 
HandshakeImpl1Server() - +Constructor for class org.java_websocket.handshake.HandshakeImpl1Server
  -
HandshakedataImpl1(Handshakedata) - -Constructor for class net.tootallnate.websocket.HandshakedataImpl1 +
hasFieldValue(String) - +Method in interface org.java_websocket.handshake.Handshakedata
  -
hasFieldValue(String) - -Method in interface net.tootallnate.websocket.Handshakedata +
hasFieldValue(String) - +Method in class org.java_websocket.handshake.HandshakedataImpl1
  -
hasFieldValue(String) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
hashCode() - +Method in class org.java_websocket.WebSocket
 

I

-
IncompleteHandshakeException - Exception in net.tootallnate.websocket.exeptions
 
IncompleteHandshakeException() - -Constructor for exception net.tootallnate.websocket.exeptions.IncompleteHandshakeException +
IncompleteHandshakeException - Exception in org.java_websocket.exeptions
 
IncompleteHandshakeException() - +Constructor for exception org.java_websocket.exeptions.IncompleteHandshakeException
  -
IncompleteHandshakeException(String, Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.IncompleteHandshakeException +
IncompleteHandshakeException(String, Throwable) - +Constructor for exception org.java_websocket.exeptions.IncompleteHandshakeException
  -
IncompleteHandshakeException(String) - -Constructor for exception net.tootallnate.websocket.exeptions.IncompleteHandshakeException +
IncompleteHandshakeException(String) - +Constructor for exception org.java_websocket.exeptions.IncompleteHandshakeException
  -
IncompleteHandshakeException(Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.IncompleteHandshakeException +
IncompleteHandshakeException(Throwable) - +Constructor for exception org.java_websocket.exeptions.IncompleteHandshakeException
  -
InvalidDataException - Exception in net.tootallnate.websocket.exeptions
 
InvalidDataException() - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidDataException +
interruptableRun() - +Method in class org.java_websocket.WebSocketClient
  -
InvalidDataException(String) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidDataException +
InvalidDataException - Exception in org.java_websocket.exeptions
 
InvalidDataException(int) - +Constructor for exception org.java_websocket.exeptions.InvalidDataException
  -
InvalidDataException(Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidDataException +
InvalidDataException(int, String) - +Constructor for exception org.java_websocket.exeptions.InvalidDataException
  -
InvalidDataException(String, Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidDataException +
InvalidDataException(int, Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidDataException
  -
InvalidFrameException - Exception in net.tootallnate.websocket.exeptions
 
InvalidFrameException() - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidFrameException +
InvalidDataException(int, String, Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidDataException
  -
InvalidFrameException(String) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidFrameException +
InvalidFrameException - Exception in org.java_websocket.exeptions
 
InvalidFrameException() - +Constructor for exception org.java_websocket.exeptions.InvalidFrameException
  -
InvalidFrameException(Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidFrameException +
InvalidFrameException(String) - +Constructor for exception org.java_websocket.exeptions.InvalidFrameException
  -
InvalidFrameException(String, Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidFrameException +
InvalidFrameException(Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidFrameException
  -
InvalidHandshakeException - Exception in net.tootallnate.websocket.exeptions
 
InvalidHandshakeException() - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidHandshakeException +
InvalidFrameException(String, Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidFrameException
  -
InvalidHandshakeException(String, Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidHandshakeException +
InvalidHandshakeException - Exception in org.java_websocket.exeptions
 
InvalidHandshakeException() - +Constructor for exception org.java_websocket.exeptions.InvalidHandshakeException
  -
InvalidHandshakeException(String) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidHandshakeException +
InvalidHandshakeException(String, Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidHandshakeException
  -
InvalidHandshakeException(Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.InvalidHandshakeException +
InvalidHandshakeException(String) - +Constructor for exception org.java_websocket.exeptions.InvalidHandshakeException
  -
isFin() - -Method in interface net.tootallnate.websocket.Framedata +
InvalidHandshakeException(Throwable) - +Constructor for exception org.java_websocket.exeptions.InvalidHandshakeException
  -
isFin() - -Method in class net.tootallnate.websocket.FramedataImpl1 +
isClosed() - +Method in class org.java_websocket.WebSocket
  -
isFlashEdgeCase(ByteBuffer) - -Method in class net.tootallnate.websocket.WebSocket +
isClosing() - +Method in class org.java_websocket.WebSocket
  -
iterateHttpFields() - -Method in interface net.tootallnate.websocket.Handshakedata +
isConnecting() - +Method in class org.java_websocket.WebSocket
  -
iterateHttpFields() - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
isFin() - +Method in interface org.java_websocket.framing.Framedata +
  +
isFin() - +Method in class org.java_websocket.framing.FramedataImpl1 +
  +
isFlashEdgeCase(ByteBuffer) - +Method in class org.java_websocket.WebSocket +
  +
isOpen() - +Method in class org.java_websocket.WebSocket +
  +
iterateHttpFields() - +Method in interface org.java_websocket.handshake.Handshakedata +
  +
iterateHttpFields() - +Method in class org.java_websocket.handshake.HandshakedataImpl1
 

K

-
known_drafts - -Variable in class net.tootallnate.websocket.WebSocket +
known_drafts - +Variable in class org.java_websocket.WebSocket
 

L

-
LF - -Static variable in class net.tootallnate.websocket.drafts.Draft_75 +
LF - +Static variable in class org.java_websocket.drafts.Draft_75
The byte representing LF, or Line Feed, or \n -
LimitExedeedException - Exception in net.tootallnate.websocket.exeptions
 
LimitExedeedException() - -Constructor for exception net.tootallnate.websocket.exeptions.LimitExedeedException -
  -
LimitExedeedException(String) - -Constructor for exception net.tootallnate.websocket.exeptions.LimitExedeedException +
LimitExedeedException - Exception in org.java_websocket.exeptions
 
LimitExedeedException() - +Constructor for exception org.java_websocket.exeptions.LimitExedeedException
  -
LimitExedeedException(Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.LimitExedeedException -
  -
LimitExedeedException(String, Throwable) - -Constructor for exception net.tootallnate.websocket.exeptions.LimitExedeedException +
LimitExedeedException(String) - +Constructor for exception org.java_websocket.exeptions.LimitExedeedException
 

+

+M

+
+
messageReceiveTiming(Date, Date, WebSocketListener.MessageType, int) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
messageReceiveTiming(Date, Date, WebSocketListener.MessageType, int) - +Method in interface org.java_websocket.WebSocketListener +
Informs the Listener how long it took to receive a Message. +
messageSendTiming(Date, Date, WebSocketListener.MessageType, int) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
messageSendTiming(Date, Date, WebSocketListener.MessageType, int) - +Method in interface org.java_websocket.WebSocketListener +
Informs the Listener how long it took to send a Message. +
+

N

-
net.tootallnate.websocket - package net.tootallnate.websocket
 
net.tootallnate.websocket.drafts - package net.tootallnate.websocket.drafts
 
net.tootallnate.websocket.exeptions - package net.tootallnate.websocket.exeptions
 
NO_OPTIONS - -Static variable in class net.tootallnate.websocket.Base64 +
NEVERCONNECTED - +Static variable in interface org.java_websocket.framing.CloseFrame +
The connection had never been established +
NO_OPTIONS - +Static variable in class org.java_websocket.util.Base64
No options specified. +
NO_UTF8 - +Static variable in interface org.java_websocket.framing.CloseFrame +
1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). +
NOCODE - +Static variable in interface org.java_websocket.framing.CloseFrame +
1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. +
NORMAL - +Static variable in interface org.java_websocket.framing.CloseFrame +
indicates a normal closure, meaning whatever purpose the + connection was established for has been fulfilled. +
NotSendableException - Exception in org.java_websocket.exeptions
 
NotSendableException() - +Constructor for exception org.java_websocket.exeptions.NotSendableException +
  +
NotSendableException(String) - +Constructor for exception org.java_websocket.exeptions.NotSendableException +
  +
NotSendableException(Throwable) - +Constructor for exception org.java_websocket.exeptions.NotSendableException +
  +
NotSendableException(String, Throwable) - +Constructor for exception org.java_websocket.exeptions.NotSendableException +
 

O

-
onClientClose(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketServer +
onClose(int, String, boolean) - +Method in class org.java_websocket.WebSocketClient
  -
onClientMessage(WebSocket, String) - -Method in class net.tootallnate.websocket.WebSocketServer +
onClose(WebSocket, int, String, boolean) - +Method in class org.java_websocket.WebSocketServer
  -
onClientOpen(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketServer +
onError(Exception) - +Method in class org.java_websocket.WebSocketClient
  -
onClose(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onError(WebSocket, Exception) - +Method in class org.java_websocket.WebSocketServer
  -
onClose(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketClient -
Calls subclass' implementation of onClose. -
onClose() - -Method in class net.tootallnate.websocket.WebSocketClient -
  -
onClose(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketServer -
  -
onError(WebSocket, Exception) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onMessage(String) - +Method in class org.java_websocket.WebSocketClient
  -
onError(WebSocket, IOException) - -Method in class net.tootallnate.websocket.WebSocketClient -
Calls subclass' implementation of onIOError. -
onError(Exception) - -Method in class net.tootallnate.websocket.WebSocketClient -
  -
onError(WebSocket, Exception) - -Method in class net.tootallnate.websocket.WebSocketServer +
onMessage(byte[]) - +Method in class org.java_websocket.WebSocketClient
  -
onHandshakeRecievedAsClient(WebSocket, Handshakedata, Handshakedata) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onMessage(WebSocket, String) - +Method in class org.java_websocket.WebSocketServer
  -
onHandshakeRecievedAsServer(WebSocket, Draft, Handshakedata) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onMessage(WebSocket, byte[]) - +Method in class org.java_websocket.WebSocketServer
  -
onMessage(WebSocket, String) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onOpen(ServerHandshake) - +Method in class org.java_websocket.WebSocketClient
  -
onMessage(WebSocket, byte[]) - -Method in class net.tootallnate.websocket.WebSocketAdapter +
onOpen(WebSocket, ClientHandshake) - +Method in class org.java_websocket.WebSocketServer
  -
onMessage(WebSocket, String) - -Method in class net.tootallnate.websocket.WebSocketClient +
onWebsocketClose(WebSocket, int, String, boolean) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketClose(WebSocket, int, String, boolean) - +Method in class org.java_websocket.WebSocketClient +
Calls subclass' implementation of onClose. +
onWebsocketClose(WebSocket, int, String, boolean) - +Method in interface org.java_websocket.WebSocketListener +
Called after WebSocket#close is explicity called, or when the + other end of the WebSocket connection is closed. +
onWebsocketClose(WebSocket, int, String, boolean) - +Method in class org.java_websocket.WebSocketServer +
  +
onWebsocketError(WebSocket, Exception) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketError(WebSocket, Exception) - +Method in class org.java_websocket.WebSocketClient +
Calls subclass' implementation of onIOError. +
onWebsocketError(WebSocket, Exception) - +Method in interface org.java_websocket.WebSocketListener +
Called if an exception worth noting occurred. +
onWebsocketError(WebSocket, Exception) - +Method in class org.java_websocket.WebSocketServer +
  +
onWebsocketHandshakeReceivedAsClient(WebSocket, ClientHandshake, ServerHandshake) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything which will cause connections to be accepted. +
onWebsocketHandshakeReceivedAsClient(WebSocket, ClientHandshake, ServerHandshake) - +Method in interface org.java_websocket.WebSocketListener +
Called on the client side when the socket connection is first established, and the WebSocket + handshake response has been received. +
onWebsocketHandshakeReceivedAsServer(WebSocket, Draft, ClientHandshake) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketHandshakeReceivedAsServer(WebSocket, Draft, ClientHandshake) - +Method in interface org.java_websocket.WebSocketListener +
Called on the server side when the socket connection is first established, and the WebSocket + handshake has been received. +
onWebsocketHandshakeSentAsClient(WebSocket, ClientHandshake) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything which will cause the connections to always progress. +
onWebsocketHandshakeSentAsClient(WebSocket, ClientHandshake) - +Method in interface org.java_websocket.WebSocketListener +
Called on the client side when the socket connection is first established, and the WebSocket + handshake has just been sent. +
onWebsocketMessage(WebSocket, String) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketMessage(WebSocket, byte[]) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketMessage(WebSocket, String) - +Method in class org.java_websocket.WebSocketClient
Calls subclass' implementation of onMessage. -
onMessage(String) - -Method in class net.tootallnate.websocket.WebSocketClient -
  -
onMessage(WebSocket, String) - -Method in class net.tootallnate.websocket.WebSocketServer -
  -
onOpen(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketAdapter -
  -
onOpen(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketClient +
onWebsocketMessage(WebSocket, byte[]) - +Method in class org.java_websocket.WebSocketClient +
  +
onWebsocketMessage(WebSocket, String) - +Method in interface org.java_websocket.WebSocketListener +
Called when an entire text frame has been received. +
onWebsocketMessage(WebSocket, byte[]) - +Method in interface org.java_websocket.WebSocketListener +
Called when an entire binary frame has been received. +
onWebsocketMessage(WebSocket, String) - +Method in class org.java_websocket.WebSocketServer +
  +
onWebsocketMessage(WebSocket, byte[]) - +Method in class org.java_websocket.WebSocketServer +
  +
onWebsocketOpen(WebSocket, Handshakedata) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketOpen(WebSocket, Handshakedata) - +Method in class org.java_websocket.WebSocketClient
Calls subclass' implementation of onOpen. -
onOpen() - -Method in class net.tootallnate.websocket.WebSocketClient -
  -
onOpen(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketServer -
  -
onPing(WebSocket, Framedata) - -Method in class net.tootallnate.websocket.WebSocketAdapter -
  -
onPong(WebSocket, Framedata) - -Method in class net.tootallnate.websocket.WebSocketAdapter -
  -
onWriteDemand(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketClient -
  -
onWriteDemand(WebSocket) - -Method in class net.tootallnate.websocket.WebSocketServer -
  -
ORDERED - -Static variable in class net.tootallnate.websocket.Base64 +
onWebsocketOpen(WebSocket, Handshakedata) - +Method in interface org.java_websocket.WebSocketListener +
Called after onHandshakeReceived returns true. +
onWebsocketOpen(WebSocket, Handshakedata) - +Method in class org.java_websocket.WebSocketServer +
  +
onWebsocketPing(WebSocket, Framedata) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation will send a pong in response to the received ping. +
onWebsocketPing(WebSocket, Framedata) - +Method in interface org.java_websocket.WebSocketListener +
Called a ping frame has been received. +
onWebsocketPong(WebSocket, Framedata) - +Method in class org.java_websocket.WebSocketAdapter +
This default implementation does not do anything. +
onWebsocketPong(WebSocket, Framedata) - +Method in interface org.java_websocket.WebSocketListener +
Called when a pong frame is received. +
onWriteDemand(WebSocket) - +Method in class org.java_websocket.WebSocketClient +
  +
onWriteDemand(WebSocket) - +Method in interface org.java_websocket.WebSocketListener +
This method is used to inform the selector thread that there is data queued to be written to the socket. +
onWriteDemand(WebSocket) - +Method in class org.java_websocket.WebSocketServer +
  +
optcode - +Variable in class org.java_websocket.framing.FramedataImpl1 +
  +
ORDERED - +Static variable in class org.java_websocket.util.Base64
Encode using the special "ordered" dialect of Base64 described here: http://www.faqs.org/qa/rfcc-1940.html. -
+
org.java_websocket - package org.java_websocket
 
org.java_websocket.drafts - package org.java_websocket.drafts
 
org.java_websocket.exeptions - package org.java_websocket.exeptions
 
org.java_websocket.framing - package org.java_websocket.framing
 
org.java_websocket.handshake - package org.java_websocket.handshake
 
org.java_websocket.util - package org.java_websocket.util
 

P

-
postProcessHandshakeRequestAsClient(HandshakeBuilder) - -Method in class net.tootallnate.websocket.Draft +
POLICY_VALIDATION - +Static variable in interface org.java_websocket.framing.CloseFrame +
1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. +
postProcessHandshakeRequestAsClient(ClientHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft
  -
postProcessHandshakeRequestAsClient(HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
postProcessHandshakeRequestAsClient(ClientHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_10
  -
postProcessHandshakeRequestAsClient(HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_17 +
postProcessHandshakeRequestAsClient(ClientHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_17
  -
postProcessHandshakeRequestAsClient(HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
postProcessHandshakeRequestAsClient(ClientHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_75
  -
postProcessHandshakeRequestAsClient(HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_76 +
postProcessHandshakeRequestAsClient(ClientHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_76
  -
postProcessHandshakeResponseAsServer(Handshakedata, HandshakeBuilder) - -Method in class net.tootallnate.websocket.Draft +
postProcessHandshakeResponseAsServer(ClientHandshake, ServerHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft
  -
postProcessHandshakeResponseAsServer(Handshakedata, HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
postProcessHandshakeResponseAsServer(ClientHandshake, ServerHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_10
  -
postProcessHandshakeResponseAsServer(Handshakedata, HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
postProcessHandshakeResponseAsServer(ClientHandshake, ServerHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_75
  -
postProcessHandshakeResponseAsServer(Handshakedata, HandshakeBuilder) - -Method in class net.tootallnate.websocket.drafts.Draft_76 +
postProcessHandshakeResponseAsServer(ClientHandshake, ServerHandshakeBuilder) - +Method in class org.java_websocket.drafts.Draft_76
  -
put(String, String) - -Method in interface net.tootallnate.websocket.HandshakeBuilder +
PROTOCOL_ERROR - +Static variable in interface org.java_websocket.framing.CloseFrame +
1002 indicates that an endpoint is terminating the connection due + to a protocol error. +
put(String, String) - +Method in interface org.java_websocket.handshake.HandshakeBuilder
  -
put(String, String) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
put(String, String) - +Method in class org.java_websocket.handshake.HandshakedataImpl1
 

R

-
read() - -Method in class net.tootallnate.websocket.Base64.InputStream +
read() - +Method in class org.java_websocket.util.Base64.InputStream
Reads enough of the input stream to convert to/from Base64 and returns the next byte. -
read(byte[], int, int) - -Method in class net.tootallnate.websocket.Base64.InputStream -
Calls Base64.InputStream.read() repeatedly until the end of stream +
read(byte[], int, int) - +Method in class org.java_websocket.util.Base64.InputStream +
Calls Base64.InputStream.read() repeatedly until the end of stream is reached or len bytes are read. -
readLine(ByteBuffer) - -Static method in class net.tootallnate.websocket.Draft +
readingState - +Variable in class org.java_websocket.drafts.Draft_75
  -
readStringLine(ByteBuffer) - -Static method in class net.tootallnate.websocket.Draft +
readLine(ByteBuffer) - +Static method in class org.java_websocket.drafts.Draft
  -
readVersion(Handshakedata) - -Static method in class net.tootallnate.websocket.drafts.Draft_10 +
readStringLine(ByteBuffer) - +Static method in class org.java_websocket.drafts.Draft
  -
reset() - -Method in class net.tootallnate.websocket.Draft +
readVersion(Handshakedata) - +Static method in class org.java_websocket.drafts.Draft_10
  -
reset() - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
READY_STATE_CLOSED - +Static variable in class org.java_websocket.WebSocket
  -
reset() - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
READY_STATE_CLOSING - +Static variable in class org.java_websocket.WebSocket
  -
resumeEncoding() - -Method in class net.tootallnate.websocket.Base64.OutputStream -
Resumes encoding of the stream. -
role - -Variable in class net.tootallnate.websocket.Draft +
READY_STATE_CONNECTING - +Static variable in class org.java_websocket.WebSocket +
  +
READY_STATE_OPEN - +Static variable in class org.java_websocket.WebSocket +
  +
readyframes - +Variable in class org.java_websocket.drafts.Draft_75 +
  +
REFUSE - +Static variable in interface org.java_websocket.framing.CloseFrame +
1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g. +
reset() - +Method in class org.java_websocket.drafts.Draft +
  +
reset() - +Method in class org.java_websocket.drafts.Draft_10
  -
run() - -Method in class net.tootallnate.websocket.WebSocketClient +
reset() - +Method in class org.java_websocket.drafts.Draft_75
  -
run() - -Method in class net.tootallnate.websocket.WebSocketServer +
resumeEncoding() - +Method in class org.java_websocket.util.Base64.OutputStream +
Resumes encoding of the stream. +
role - +Variable in class org.java_websocket.drafts.Draft +
In some cases the handshake will be parsed different depending on whether +
run() - +Method in class org.java_websocket.WebSocketClient +
  +
run() - +Method in class org.java_websocket.WebSocketServer
 

S

-
send(String) - -Method in class net.tootallnate.websocket.WebSocket +
send(String) - +Method in class org.java_websocket.WebSocket +
Send Text data to the other end. +
send(byte[]) - +Method in class org.java_websocket.WebSocket +
Send Binary data (plain bytes) to the other end. +
send(String) - +Method in class org.java_websocket.WebSocketClient +
Sends text to the connected WebSocket server. +
send(byte[]) - +Method in class org.java_websocket.WebSocketClient +
Sends data to the connected WebSocket server. +
sendFrame(Framedata) - +Method in class org.java_websocket.WebSocket
  -
send(byte[]) - -Method in class net.tootallnate.websocket.WebSocket +
ServerHandshake - Interface in org.java_websocket.handshake
 
ServerHandshakeBuilder - Interface in org.java_websocket.handshake
 
setAddress(InetSocketAddress) - +Method in class org.java_websocket.WebSocketServer +
Sets the address (host:port) that this WebSocketServer should listen on. +
setContent(byte[]) - +Method in interface org.java_websocket.handshake.HandshakeBuilder
  -
send(String) - -Method in class net.tootallnate.websocket.WebSocketClient -
Sends text to the connected WebSocket server. -
sendFrame(Framedata) - -Method in class net.tootallnate.websocket.WebSocket +
setContent(byte[]) - +Method in class org.java_websocket.handshake.HandshakedataImpl1 +
  +
setFin(boolean) - +Method in interface org.java_websocket.framing.FrameBuilder
  -
sendToAll(String) - -Method in class net.tootallnate.websocket.WebSocketServer -
Sends text to all currently connected WebSocket clients. -
sendToAllExcept(WebSocket, String) - -Method in class net.tootallnate.websocket.WebSocketServer -
Sends text to all currently connected WebSocket clients, - except for the specified connection. -
sendToAllExcept(Set<WebSocket>, String) - -Method in class net.tootallnate.websocket.WebSocketServer -
Sends text to all currently connected WebSocket clients, - except for those found in the Set connections. -
setAddress(InetSocketAddress) - -Method in class net.tootallnate.websocket.WebSocketServer -
Sets the port that this WebSocketServer should listen on. -
setContent(byte[]) - -Method in interface net.tootallnate.websocket.HandshakeBuilder +
setFin(boolean) - +Method in class org.java_websocket.framing.FramedataImpl1
  -
setContent(byte[]) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
setHttpStatus(short) - +Method in class org.java_websocket.handshake.HandshakeImpl1Server
  -
setFin(boolean) - -Method in interface net.tootallnate.websocket.FrameBuilder +
setHttpStatus(short) - +Method in interface org.java_websocket.handshake.ServerHandshakeBuilder
  -
setFin(boolean) - -Method in class net.tootallnate.websocket.FramedataImpl1 +
setHttpStatusMessage(String) - +Method in class org.java_websocket.handshake.HandshakeImpl1Server
  -
setHttpStatusMessage(String) - -Method in interface net.tootallnate.websocket.HandshakeBuilder +
setHttpStatusMessage(String) - +Method in interface org.java_websocket.handshake.ServerHandshakeBuilder
  -
setHttpStatusMessage(String) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
setOptcode(Framedata.Opcode) - +Method in interface org.java_websocket.framing.FrameBuilder
  -
setOptcode(Framedata.Opcode) - -Method in interface net.tootallnate.websocket.FrameBuilder +
setOptcode(Framedata.Opcode) - +Method in class org.java_websocket.framing.FramedataImpl1
  -
setOptcode(Framedata.Opcode) - -Method in class net.tootallnate.websocket.FramedataImpl1 +
setParseMode(WebSocket.Role) - +Method in class org.java_websocket.drafts.Draft
  -
setParseMode(WebSocket.Role) - -Method in class net.tootallnate.websocket.Draft +
setPayload(byte[]) - +Method in class org.java_websocket.framing.CloseFrameBuilder
  -
setPayload(byte[]) - -Method in interface net.tootallnate.websocket.FrameBuilder +
setPayload(byte[]) - +Method in interface org.java_websocket.framing.FrameBuilder
  -
setPayload(byte[]) - -Method in class net.tootallnate.websocket.FramedataImpl1 +
setPayload(byte[]) - +Method in class org.java_websocket.framing.FramedataImpl1
  -
setResourceDescriptor(String) - -Method in interface net.tootallnate.websocket.HandshakeBuilder +
setResourceDescriptor(String) - +Method in interface org.java_websocket.handshake.ClientHandshakeBuilder
  -
setResourceDescriptor(String) - -Method in class net.tootallnate.websocket.HandshakedataImpl1 +
setResourceDescriptor(String) - +Method in class org.java_websocket.handshake.HandshakeImpl1Client
  -
setTransferemasked(boolean) - -Method in interface net.tootallnate.websocket.FrameBuilder +
setTransferemasked(boolean) - +Method in interface org.java_websocket.framing.FrameBuilder
  -
setTransferemasked(boolean) - -Method in class net.tootallnate.websocket.FramedataImpl1 +
setTransferemasked(boolean) - +Method in class org.java_websocket.framing.FramedataImpl1
  -
start() - -Method in class net.tootallnate.websocket.WebSocketServer +
start() - +Method in class org.java_websocket.WebSocketServer
Starts the server thread that binds to the currently set port number and listeners for WebSocket connection requests. -
START_OF_FRAME - -Static variable in class net.tootallnate.websocket.drafts.Draft_75 +
START_OF_FRAME - +Static variable in class org.java_websocket.drafts.Draft_75
The byte representing the beginning of a WebSocket text frame. -
startHandshake(HandshakeBuilder) - -Method in class net.tootallnate.websocket.WebSocket -
  -
stingAscii(byte[]) - -Static method in class net.tootallnate.websocket.Charsetfunctions +
startHandshake(ClientHandshakeBuilder) - +Method in class org.java_websocket.WebSocket
  -
stingAscii(byte[], int, int) - -Static method in class net.tootallnate.websocket.Charsetfunctions -
  -
stingUtf8(byte[]) - -Static method in class net.tootallnate.websocket.Charsetfunctions -
  -
stop() - -Method in class net.tootallnate.websocket.WebSocketServer +
stop() - +Method in class org.java_websocket.WebSocketServer
Closes all connected clients sockets, then closes the underlying ServerSocketChannel, effectively killing the server socket thread and freeing the port the server was bound to. -
suspendEncoding() - -Method in class net.tootallnate.websocket.Base64.OutputStream +
stringAscii(byte[]) - +Static method in class org.java_websocket.util.Charsetfunctions +
  +
stringAscii(byte[], int, int) - +Static method in class org.java_websocket.util.Charsetfunctions +
  +
stringUtf8(byte[]) - +Static method in class org.java_websocket.util.Charsetfunctions +
  +
stringUtf8(byte[], int, int) - +Static method in class org.java_websocket.util.Charsetfunctions +
  +
suspendEncoding() - +Method in class org.java_websocket.util.Base64.OutputStream
Suspends encoding of the stream.

T

-
toString() - -Method in class net.tootallnate.websocket.FramedataImpl1 +
TOOBIG - +Static variable in interface org.java_websocket.framing.CloseFrame +
1009 indicates that an endpoint is terminating the connection + because it has received a message which is too big for it to + process. +
toString() - +Method in class org.java_websocket.framing.CloseFrameBuilder +
  +
toString() - +Method in class org.java_websocket.framing.FramedataImpl1 +
  +
toString() - +Method in class org.java_websocket.WebSocket
  -
toString() - -Method in class net.tootallnate.websocket.WebSocket +
transferemasked - +Variable in class org.java_websocket.framing.FramedataImpl1
  -
translateFrame(ByteBuffer) - -Method in class net.tootallnate.websocket.Draft +
translateFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft
  -
translateFrame(ByteBuffer) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
translateFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_10
  -
translateFrame(ByteBuffer) - -Method in class net.tootallnate.websocket.drafts.Draft_75 +
translateFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_75
  -
translateHandshake(ByteBuffer) - -Method in class net.tootallnate.websocket.Draft +
translateFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_76
  -
translateHandshake(ByteBuffer) - -Method in class net.tootallnate.websocket.drafts.Draft_76 +
translateHandshake(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft
  -
translateHandshakeHttp(ByteBuffer) - -Static method in class net.tootallnate.websocket.Draft +
translateHandshake(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_76
  -
translateSingleFrame(ByteBuffer) - -Method in class net.tootallnate.websocket.drafts.Draft_10 +
translateHandshakeHttp(ByteBuffer, WebSocket.Role) - +Static method in class org.java_websocket.drafts.Draft +
  +
translateRegularFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_75 +
  +
translateSingleFrame(ByteBuffer) - +Method in class org.java_websocket.drafts.Draft_10
 

U

-
URL_SAFE - -Static variable in class net.tootallnate.websocket.Base64 +
URL_SAFE - +Static variable in class org.java_websocket.util.Base64
Encode using Base64-like encoding that is URL- and Filename-safe as described in Section 4 of RFC3548: http://www.faqs.org/rfcs/rfc3548.html. -
utf8Bytes(String) - -Static method in class net.tootallnate.websocket.Charsetfunctions +
utf8Bytes(String) - +Static method in class org.java_websocket.util.Charsetfunctions
 

V

-
valueOf(String) - -Static method in enum net.tootallnate.websocket.Draft.HandshakeState +
valueOf(String) - +Static method in enum org.java_websocket.drafts.Draft.CloseHandshakeType +
Returns the enum constant of this type with the specified name. +
valueOf(String) - +Static method in enum org.java_websocket.drafts.Draft.HandshakeState
Returns the enum constant of this type with the specified name. -
valueOf(String) - -Static method in enum net.tootallnate.websocket.Framedata.Opcode +
valueOf(String) - +Static method in enum org.java_websocket.framing.Framedata.Opcode
Returns the enum constant of this type with the specified name. -
valueOf(String) - -Static method in enum net.tootallnate.websocket.WebSocket.Role +
valueOf(String) - +Static method in enum org.java_websocket.WebSocket.Role
Returns the enum constant of this type with the specified name. -
values() - -Static method in enum net.tootallnate.websocket.Draft.HandshakeState +
valueOf(String) - +Static method in enum org.java_websocket.WebSocketListener.MessageType +
Returns the enum constant of this type with the specified name. +
values() - +Static method in enum org.java_websocket.drafts.Draft.CloseHandshakeType +
Returns an array containing the constants of this enum type, in +the order they are declared. +
values() - +Static method in enum org.java_websocket.drafts.Draft.HandshakeState +
Returns an array containing the constants of this enum type, in +the order they are declared. +
values() - +Static method in enum org.java_websocket.framing.Framedata.Opcode
Returns an array containing the constants of this enum type, in the order they are declared. -
values() - -Static method in enum net.tootallnate.websocket.Framedata.Opcode +
values() - +Static method in enum org.java_websocket.WebSocket.Role
Returns an array containing the constants of this enum type, in the order they are declared. -
values() - -Static method in enum net.tootallnate.websocket.WebSocket.Role +
values() - +Static method in enum org.java_websocket.WebSocketListener.MessageType
Returns an array containing the constants of this enum type, in the order they are declared.
@@ -914,46 +1209,45 @@

W

-
WebSocket - Class in net.tootallnate.websocket
Represents one end (client or server) of a single WebSocket connection.
WebSocket(WebSocketListener, Draft, SocketChannel) - -Constructor for class net.tootallnate.websocket.WebSocket -
Used in WebSocketServer and WebSocketClient. -
WebSocket(WebSocketListener, List<Draft>, SocketChannel) - -Constructor for class net.tootallnate.websocket.WebSocket +
WebSocket - Class in org.java_websocket
Represents one end (client or server) of a single WebSocket connection.
WebSocket(WebSocketListener, Draft, SocketChannel) - +Constructor for class org.java_websocket.WebSocket +
Used in WebSocketServer and WebSocketClient. +
WebSocket(WebSocketListener, List<Draft>, SocketChannel) - +Constructor for class org.java_websocket.WebSocket
  -
WebSocket.Role - Enum in net.tootallnate.websocket
 
WebSocketAdapter - Class in net.tootallnate.websocket
 
WebSocketAdapter() - -Constructor for class net.tootallnate.websocket.WebSocketAdapter +
WebSocket.Role - Enum in org.java_websocket
 
WebSocketAdapter - Class in org.java_websocket
 
WebSocketAdapter() - +Constructor for class org.java_websocket.WebSocketAdapter
  -
WebSocketClient - Class in net.tootallnate.websocket
The WebSocketClient is an abstract class that expects a valid - "ws://" URI to connect to.
WebSocketClient(URI) - -Constructor for class net.tootallnate.websocket.WebSocketClient +
WebSocketClient - Class in org.java_websocket
The WebSocketClient is an abstract class that expects a valid + "ws://" URI to connect to.
WebSocketClient(URI) - +Constructor for class org.java_websocket.WebSocketClient
  -
WebSocketClient(URI, Draft) - -Constructor for class net.tootallnate.websocket.WebSocketClient +
WebSocketClient(URI, Draft) - +Constructor for class org.java_websocket.WebSocketClient
Constructs a WebSocketClient instance and sets it to the connect to the specified URI. -
WebSocketServer - Class in net.tootallnate.websocket
WebSocketServer is an abstract class that only takes care of the - HTTP handshake portion of WebSockets.
WebSocketServer() - -Constructor for class net.tootallnate.websocket.WebSocketServer +
WebSocketListener - Interface in org.java_websocket
Implemented by WebSocketClient and WebSocketServer.
WebSocketListener.MessageType - Enum in org.java_websocket
 
WebSocketServer - Class in org.java_websocket
WebSocketServer is an abstract class that only takes care of the + HTTP handshake portion of WebSockets.
WebSocketServer() - +Constructor for class org.java_websocket.WebSocketServer
Nullary constructor. -
WebSocketServer(InetSocketAddress) - -Constructor for class net.tootallnate.websocket.WebSocketServer -
Creates a WebSocketServer that will attempt to listen on port - port. -
WebSocketServer(InetSocketAddress, Draft) - -Constructor for class net.tootallnate.websocket.WebSocketServer -
Creates a WebSocketServer that will attempt to listen on port port, +
WebSocketServer(InetSocketAddress) - +Constructor for class org.java_websocket.WebSocketServer +
Creates a WebSocketServer that will attempt to bind/listen on the given address. +
WebSocketServer(InetSocketAddress, Draft) - +Constructor for class org.java_websocket.WebSocketServer +
Creates a WebSocketServer that will attempt to bind/listen on the given address, and comply with Draft version draft. -
write(int) - -Method in class net.tootallnate.websocket.Base64.OutputStream +
write(int) - +Method in class org.java_websocket.util.Base64.OutputStream
Writes the byte to the output stream after converting to/from Base64 notation. -
write(byte[], int, int) - -Method in class net.tootallnate.websocket.Base64.OutputStream -
Calls Base64.OutputStream.write(int) repeatedly until len +
write(byte[], int, int) - +Method in class org.java_websocket.util.Base64.OutputStream +
Calls Base64.OutputStream.write(int) repeatedly until len bytes are written.

-A B C D E F G H I K L N O P R S T U V W +A B C D E F G H I K L M N O P R S T U V W diff --git a/doc/index.html b/doc/index.html index 836934b04..612b8a651 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ - + Generated Documentation (Untitled) diff --git a/doc/net/tootallnate/websocket/Draft.html b/doc/net/tootallnate/websocket/Draft.html deleted file mode 100644 index 16aec73ff..000000000 --- a/doc/net/tootallnate/websocket/Draft.html +++ /dev/null @@ -1,669 +0,0 @@ - - - - - - -Draft - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class Draft

-
-java.lang.Object
-  extended by net.tootallnate.websocket.Draft
-
-
-
Direct Known Subclasses:
Draft_10, Draft_75
-
-
-
-
public abstract class Draft
extends java.lang.Object
- - -

-


- -

- - - - - - - - - - - -
-Nested Class Summary
-static classDraft.HandshakeState - -
-           
- - - - - - - - - - -
-Field Summary
-protected  WebSocket.Rolerole - -
-           
-  - - - - - - - - - - -
-Constructor Summary
Draft() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
-abstract  Draft.HandshakeStateacceptHandshakeAsClient(Handshakedata request, - Handshakedata response) - -
-           
-abstract  Draft.HandshakeStateacceptHandshakeAsServer(Handshakedata handshakedata) - -
-           
-protected  booleanbasicAccept(Handshakedata handshakedata) - -
-           
- intcheckAlloc(int bytecount) - -
-           
-abstract  java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) - -
-           
-abstract  java.util.List<Framedata>createFrames(byte[] binary, - boolean mask) - -
-           
-abstract  java.util.List<Framedata>createFrames(java.lang.String text, - boolean mask) - -
-           
- java.util.List<java.nio.ByteBuffer>createHandshake(Handshakedata handshakedata, - WebSocket.Role ownrole) - -
-           
- java.util.List<java.nio.ByteBuffer>createHandshake(Handshakedata handshakedata, - WebSocket.Role ownrole, - boolean withcontent) - -
-           
-abstract  HandshakeBuilderpostProcessHandshakeRequestAsClient(HandshakeBuilder request) - -
-           
-abstract  HandshakeBuilderpostProcessHandshakeResponseAsServer(Handshakedata request, - HandshakeBuilder response) - -
-           
-static java.nio.ByteBufferreadLine(java.nio.ByteBuffer buf) - -
-           
-static java.lang.StringreadStringLine(java.nio.ByteBuffer buf) - -
-           
-abstract  voidreset() - -
-           
- voidsetParseMode(WebSocket.Role role) - -
-           
-abstract  java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) - -
-           
- HandshakedatatranslateHandshake(java.nio.ByteBuffer buf) - -
-           
-static HandshakeBuildertranslateHandshakeHttp(java.nio.ByteBuffer buf) - -
-           
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-role

-
-protected WebSocket.Role role
-
-
-
-
- - - - - - - - -
-Constructor Detail
- -

-Draft

-
-public Draft()
-
-
- - - - - - - - -
-Method Detail
- -

-readLine

-
-public static java.nio.ByteBuffer readLine(java.nio.ByteBuffer buf)
-
-
-
-
-
-
- -

-readStringLine

-
-public static java.lang.String readStringLine(java.nio.ByteBuffer buf)
-
-
-
-
-
-
- -

-translateHandshakeHttp

-
-public static HandshakeBuilder translateHandshakeHttp(java.nio.ByteBuffer buf)
-                                               throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-acceptHandshakeAsClient

-
-public abstract Draft.HandshakeState acceptHandshakeAsClient(Handshakedata request,
-                                                             Handshakedata response)
-                                                      throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-acceptHandshakeAsServer

-
-public abstract Draft.HandshakeState acceptHandshakeAsServer(Handshakedata handshakedata)
-                                                      throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-basicAccept

-
-protected boolean basicAccept(Handshakedata handshakedata)
-
-
-
-
-
-
- -

-createBinaryFrame

-
-public abstract java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
-
-
-
-
-
-
- -

-createFrames

-
-public abstract java.util.List<Framedata> createFrames(byte[] binary,
-                                                       boolean mask)
-
-
-
-
-
-
- -

-createFrames

-
-public abstract java.util.List<Framedata> createFrames(java.lang.String text,
-                                                       boolean mask)
-
-
-
-
-
-
- -

-reset

-
-public abstract void reset()
-
-
-
-
-
-
- -

-createHandshake

-
-public java.util.List<java.nio.ByteBuffer> createHandshake(Handshakedata handshakedata,
-                                                           WebSocket.Role ownrole)
-
-
-
-
-
-
- -

-createHandshake

-
-public java.util.List<java.nio.ByteBuffer> createHandshake(Handshakedata handshakedata,
-                                                           WebSocket.Role ownrole,
-                                                           boolean withcontent)
-
-
-
-
-
-
- -

-postProcessHandshakeRequestAsClient

-
-public abstract HandshakeBuilder postProcessHandshakeRequestAsClient(HandshakeBuilder request)
-                                                              throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-postProcessHandshakeResponseAsServer

-
-public abstract HandshakeBuilder postProcessHandshakeResponseAsServer(Handshakedata request,
-                                                                      HandshakeBuilder response)
-                                                               throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-translateFrame

-
-public abstract java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
-                                                  throws InvalidDataException
-
-
- -
Throws: -
InvalidDataException
-
-
-
- -

-translateHandshake

-
-public Handshakedata translateHandshake(java.nio.ByteBuffer buf)
-                                 throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-checkAlloc

-
-public int checkAlloc(int bytecount)
-               throws LimitExedeedException,
-                      InvalidDataException
-
-
- -
Throws: -
LimitExedeedException -
InvalidDataException
-
-
-
- -

-setParseMode

-
-public void setParseMode(WebSocket.Role role)
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/FramedataImpl1.html b/doc/net/tootallnate/websocket/FramedataImpl1.html deleted file mode 100644 index 7956d2bb0..000000000 --- a/doc/net/tootallnate/websocket/FramedataImpl1.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - -FramedataImpl1 - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class FramedataImpl1

-
-java.lang.Object
-  extended by net.tootallnate.websocket.FramedataImpl1
-
-
-
All Implemented Interfaces:
FrameBuilder, Framedata
-
-
-
-
public class FramedataImpl1
extends java.lang.Object
implements FrameBuilder
- - -

-


- -

- - - - - - - -
-Nested Class Summary
- - - - - - - -
Nested classes/interfaces inherited from interface net.tootallnate.websocket.Framedata
Framedata.Opcode
-  - - - - - - - - - - - - - - - - - -
-Constructor Summary
FramedataImpl1() - -
-           
FramedataImpl1(Framedata.Opcode op) - -
-           
FramedataImpl1(Framedata f) - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- voidappend(Framedata nextframe) - -
-           
- Framedata.OpcodegetOpcode() - -
-           
- byte[]getPayloadData() - -
-           
- booleangetTransfereMasked() - -
-           
- booleanisFin() - -
-           
- voidsetFin(boolean fin) - -
-           
- voidsetOptcode(Framedata.Opcode optcode) - -
-           
- voidsetPayload(byte[] payload) - -
-           
- voidsetTransferemasked(boolean transferemasked) - -
-           
- java.lang.StringtoString() - -
-           
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-FramedataImpl1

-
-public FramedataImpl1()
-
-
-
- -

-FramedataImpl1

-
-public FramedataImpl1(Framedata.Opcode op)
-
-
-
- -

-FramedataImpl1

-
-public FramedataImpl1(Framedata f)
-
-
- - - - - - - - -
-Method Detail
- -

-isFin

-
-public boolean isFin()
-
-
-
Specified by:
isFin in interface Framedata
-
-
-
-
-
-
- -

-getOpcode

-
-public Framedata.Opcode getOpcode()
-
-
-
Specified by:
getOpcode in interface Framedata
-
-
-
-
-
-
- -

-getTransfereMasked

-
-public boolean getTransfereMasked()
-
-
-
Specified by:
getTransfereMasked in interface Framedata
-
-
-
-
-
-
- -

-getPayloadData

-
-public byte[] getPayloadData()
-
-
-
Specified by:
getPayloadData in interface Framedata
-
-
-
-
-
-
- -

-setFin

-
-public void setFin(boolean fin)
-
-
-
Specified by:
setFin in interface FrameBuilder
-
-
-
-
-
-
- -

-setOptcode

-
-public void setOptcode(Framedata.Opcode optcode)
-
-
-
Specified by:
setOptcode in interface FrameBuilder
-
-
-
-
-
-
- -

-setPayload

-
-public void setPayload(byte[] payload)
-
-
-
Specified by:
setPayload in interface FrameBuilder
-
-
-
-
-
-
- -

-setTransferemasked

-
-public void setTransferemasked(boolean transferemasked)
-
-
-
Specified by:
setTransferemasked in interface FrameBuilder
-
-
-
-
-
-
- -

-append

-
-public void append(Framedata nextframe)
-            throws InvalidFrameException
-
-
-
Specified by:
append in interface Framedata
-
-
- -
Throws: -
InvalidFrameException
-
-
-
- -

-toString

-
-public java.lang.String toString()
-
-
-
Overrides:
toString in class java.lang.Object
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/WebSocket.html b/doc/net/tootallnate/websocket/WebSocket.html deleted file mode 100644 index a7b25d7b4..000000000 --- a/doc/net/tootallnate/websocket/WebSocket.html +++ /dev/null @@ -1,656 +0,0 @@ - - - - - - -WebSocket - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class WebSocket

-
-java.lang.Object
-  extended by net.tootallnate.websocket.WebSocket
-
-
-
-
public final class WebSocket
extends java.lang.Object
- - -

-Represents one end (client or server) of a single WebSocket connection. - Takes care of the "handshake" phase, then allows for easy sending of - text frames, and recieving frames through an event-based model. - - This is an inner class, used by WebSocketClient and WebSocketServer, and should never need to be instantiated directly - by your code. However, instances are exposed in WebSocketServer through the onClientOpen, onClientClose, - onClientMessage callbacks. -

- -

-

-
Author:
-
Nathan Rajlich
-
-
- -

- - - - - - - - - - - -
-Nested Class Summary
-static classWebSocket.Role - -
-           
- - - - - - - - - - - - - - - - - - -
-Field Summary
-static booleanDEBUG - -
-           
-static intDEFAULT_PORT - -
-          The default port of WebSockets, as defined in the spec.
- java.util.List<Draft>known_drafts - -
-           
-  - - - - - - - - - - - - - -
-Constructor Summary
WebSocket(net.tootallnate.websocket.WebSocketListener listener, - Draft draft, - java.nio.channels.SocketChannel sockchannel) - -
-          Used in WebSocketServer and WebSocketClient.
WebSocket(net.tootallnate.websocket.WebSocketListener listener, - java.util.List<Draft> drafts, - java.nio.channels.SocketChannel sockchannel) - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- voidabort() - -
-           
- voidabort(java.lang.String problemmessage) - -
-           
- voidclose() - -
-          Closes the underlying SocketChannel, and calls the listener's onClose - event handler.
- java.net.InetSocketAddressgetLocalSocketAddress() - -
-           
- java.net.InetSocketAddressgetRemoteSocketAddress() - -
-           
- voidhandleRead() - -
-          Should be called when a Selector has a key that is writable for this - WebSocket's SocketChannel connection.
- voidhandleWrite() - -
-           
- Draft.HandshakeStateisFlashEdgeCase(java.nio.ByteBuffer request) - -
-           
- voidsend(byte[] bytes) - -
-           
- voidsend(java.lang.String text) - -
-           
- voidsendFrame(Framedata framedata) - -
-           
- voidstartHandshake(HandshakeBuilder handshakedata) - -
-           
- java.lang.StringtoString() - -
-           
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-DEFAULT_PORT

-
-public static final int DEFAULT_PORT
-
-
The default port of WebSockets, as defined in the spec. If the nullary - constructor is used, DEFAULT_PORT will be the port the WebSocketServer - is binded to. Note that ports under 1024 usually require root permissions. -

-

-
See Also:
Constant Field Values
-
-
- -

-DEBUG

-
-public static boolean DEBUG
-
-
-
-
-
- -

-known_drafts

-
-public java.util.List<Draft> known_drafts
-
-
-
-
- - - - - - - - -
-Constructor Detail
- -

-WebSocket

-
-public WebSocket(net.tootallnate.websocket.WebSocketListener listener,
-                 Draft draft,
-                 java.nio.channels.SocketChannel sockchannel)
-
-
Used in WebSocketServer and WebSocketClient. -

-

-
Parameters:
socketChannel - The SocketChannel instance to read and - write to. The channel should already be registered - with a Selector before construction of this object.
listener - The WebSocketListener to notify of events when - they occur.
-
-
- -

-WebSocket

-
-public WebSocket(net.tootallnate.websocket.WebSocketListener listener,
-                 java.util.List<Draft> drafts,
-                 java.nio.channels.SocketChannel sockchannel)
-
-
- - - - - - - - -
-Method Detail
- -

-handleRead

-
-public void handleRead()
-                throws java.lang.InterruptedException,
-                       java.io.IOException
-
-
Should be called when a Selector has a key that is writable for this - WebSocket's SocketChannel connection. -

-

- -
Throws: -
java.io.IOException - When socket related I/O errors occur. -
java.lang.InterruptedException
-
-
-
- -

-abort

-
-public void abort()
-
-
-
-
-
-
- -

-abort

-
-public void abort(java.lang.String problemmessage)
-
-
-
-
-
-
- -

-close

-
-public void close()
-
-
Closes the underlying SocketChannel, and calls the listener's onClose - event handler. -

-

-
-
-
-
- -

-send

-
-public void send(java.lang.String text)
-          throws java.lang.IllegalArgumentException,
-                 java.nio.channels.NotYetConnectedException,
-                 java.lang.InterruptedException
-
-
- -
Throws: -
java.io.IOException -
java.lang.InterruptedException -
java.lang.IllegalArgumentException -
java.nio.channels.NotYetConnectedException
-
-
-
- -

-send

-
-public void send(byte[] bytes)
-          throws java.lang.IllegalArgumentException,
-                 java.nio.channels.NotYetConnectedException,
-                 java.lang.InterruptedException
-
-
- -
Throws: -
java.lang.IllegalArgumentException -
java.nio.channels.NotYetConnectedException -
java.lang.InterruptedException
-
-
-
- -

-sendFrame

-
-public void sendFrame(Framedata framedata)
-               throws java.lang.InterruptedException
-
-
- -
Throws: -
java.lang.InterruptedException
-
-
-
- -

-handleWrite

-
-public void handleWrite()
-                 throws java.io.IOException
-
-
- -
Throws: -
java.io.IOException
-
-
-
- -

-isFlashEdgeCase

-
-public Draft.HandshakeState isFlashEdgeCase(java.nio.ByteBuffer request)
-
-
-
-
-
-
- -

-startHandshake

-
-public void startHandshake(HandshakeBuilder handshakedata)
-                    throws InvalidHandshakeException,
-                           java.lang.InterruptedException
-
-
- -
Throws: -
InvalidHandshakeException -
java.lang.InterruptedException
-
-
-
- -

-getRemoteSocketAddress

-
-public java.net.InetSocketAddress getRemoteSocketAddress()
-
-
-
-
-
-
- -

-getLocalSocketAddress

-
-public java.net.InetSocketAddress getLocalSocketAddress()
-
-
-
-
-
-
- -

-toString

-
-public java.lang.String toString()
-
-
-
Overrides:
toString in class java.lang.Object
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/WebSocketAdapter.html b/doc/net/tootallnate/websocket/WebSocketAdapter.html deleted file mode 100644 index 2ba669cac..000000000 --- a/doc/net/tootallnate/websocket/WebSocketAdapter.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - -WebSocketAdapter - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class WebSocketAdapter

-
-java.lang.Object
-  extended by net.tootallnate.websocket.WebSocketAdapter
-
-
-
Direct Known Subclasses:
WebSocketClient, WebSocketServer
-
-
-
-
public abstract class WebSocketAdapter
extends java.lang.Object
- - -

-


- -

- - - - - - - - - - - -
-Constructor Summary
WebSocketAdapter() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- java.lang.StringgetFlashPolicy(WebSocket conn) - -
-          Gets the XML string that should be returned if a client requests a Flash - security policy.
- voidonClose(WebSocket conn) - -
-          Called after WebSocket#close is explicity called, or when the - other end of the WebSocket connection is closed.
- voidonError(WebSocket conn, - java.lang.Exception ex) - -
-           
- booleanonHandshakeRecievedAsClient(WebSocket conn, - Handshakedata request, - Handshakedata response) - -
-           
- HandshakeBuilderonHandshakeRecievedAsServer(WebSocket conn, - Draft draft, - Handshakedata request) - -
-          Called when the socket connection is first established, and the WebSocket - handshake has been recieved.
- voidonMessage(WebSocket conn, - byte[] blob) - -
-           
- voidonMessage(WebSocket conn, - java.lang.String message) - -
-          Called when an entire text frame has been recieved.
- voidonOpen(WebSocket conn) - -
-          Called after onHandshakeRecieved returns true.
- voidonPing(WebSocket conn, - Framedata f) - -
-           
- voidonPong(WebSocket conn, - Framedata f) - -
-           
- voidonWriteDemand(WebSocket conn) - -
-           
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-WebSocketAdapter

-
-public WebSocketAdapter()
-
-
- - - - - - - - -
-Method Detail
- -

-onHandshakeRecievedAsServer

-
-public HandshakeBuilder onHandshakeRecievedAsServer(WebSocket conn,
-                                                    Draft draft,
-                                                    Handshakedata request)
-                                             throws java.io.IOException
-
-
Called when the socket connection is first established, and the WebSocket - handshake has been recieved. -

-

-
-
-
- -
Throws: -
java.io.IOException
-
-
-
- -

-onHandshakeRecievedAsClient

-
-public boolean onHandshakeRecievedAsClient(WebSocket conn,
-                                           Handshakedata request,
-                                           Handshakedata response)
-                                    throws java.io.IOException
-
-
-
-
-
- -
Throws: -
java.io.IOException
-
-
-
- -

-onMessage

-
-public void onMessage(WebSocket conn,
-                      java.lang.String message)
-
-
Called when an entire text frame has been recieved. Do whatever you want - here... -

-

-
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
message - The UTF-8 decoded message that was recieved.
-
-
-
- -

-onOpen

-
-public void onOpen(WebSocket conn)
-
-
Called after onHandshakeRecieved returns true. - Indicates that a complete WebSocket connection has been established, - and we are ready to send/recieve data. -

-

-
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
-
-
-
- -

-onClose

-
-public void onClose(WebSocket conn)
-
-
Called after WebSocket#close is explicity called, or when the - other end of the WebSocket connection is closed. -

-

-
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
-
-
-
- -

-onMessage

-
-public void onMessage(WebSocket conn,
-                      byte[] blob)
-
-
-
-
-
-
-
-
-
- -

-onPing

-
-public void onPing(WebSocket conn,
-                   Framedata f)
-
-
-
-
-
-
-
-
-
- -

-onPong

-
-public void onPong(WebSocket conn,
-                   Framedata f)
-
-
-
-
-
-
-
-
-
- -

-getFlashPolicy

-
-public java.lang.String getFlashPolicy(WebSocket conn)
-
-
Gets the XML string that should be returned if a client requests a Flash - security policy. - - The default implementation allows access from all remote domains, but - only on the port that this WebSocketServer is listening on. - - This is specifically implemented for gitime's WebSocket client for Flash: - http://github.com/gimite/web-socket-js -

-

-
-
-
- -
Returns:
An XML String that comforms to Flash's security policy. You MUST - not include the null char at the end, it is appended automatically.
-
-
-
- -

-onError

-
-public void onError(WebSocket conn,
-                    java.lang.Exception ex)
-
-
-
-
-
-
-
-
-
- -

-onWriteDemand

-
-public void onWriteDemand(WebSocket conn)
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/WebSocketClient.html b/doc/net/tootallnate/websocket/WebSocketClient.html deleted file mode 100644 index 5be99e191..000000000 --- a/doc/net/tootallnate/websocket/WebSocketClient.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - -WebSocketClient - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class WebSocketClient

-
-java.lang.Object
-  extended by net.tootallnate.websocket.WebSocketAdapter
-      extended by net.tootallnate.websocket.WebSocketClient
-
-
-
All Implemented Interfaces:
java.lang.Runnable
-
-
-
-
public abstract class WebSocketClient
extends WebSocketAdapter
implements java.lang.Runnable
- - -

-The WebSocketClient is an abstract class that expects a valid - "ws://" URI to connect to. When connected, an instance recieves important - events related to the life of the connection. A subclass must implement - onOpen, onClose, and onMessage to be - useful. An instance can send messages to it's connected server via the - send method. -

- -

-

-
Author:
-
Nathan Rajlich
-
-
- -

- - - - - - - - - - - - - - -
-Constructor Summary
WebSocketClient(java.net.URI serverURI) - -
-           
WebSocketClient(java.net.URI serverUri, - Draft draft) - -
-          Constructs a WebSocketClient instance and sets it to the connect to the - specified URI.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- java.lang.Threadclose() - -
-          Calls close on the underlying SocketChannel, which in turn - closes the socket connection, and ends the client socket thread.
- voidconnect() - -
-          Starts a background thread that attempts and maintains a WebSocket - connection to the URI specified in the constructor or via setURI.
- DraftgetDraft() - -
-           
- java.net.URIgetURI() - -
-          Gets the URI that this WebSocketClient is connected to.
-abstract  voidonClose() - -
-           
- voidonClose(WebSocket conn) - -
-          Calls subclass' implementation of onClose.
-abstract  voidonError(java.lang.Exception ex) - -
-           
- voidonError(WebSocket conn, - java.io.IOException ex) - -
-          Calls subclass' implementation of onIOError.
-abstract  voidonMessage(java.lang.String message) - -
-           
- voidonMessage(WebSocket conn, - java.lang.String message) - -
-          Calls subclass' implementation of onMessage.
-abstract  voidonOpen() - -
-           
- voidonOpen(WebSocket conn) - -
-          Calls subclass' implementation of onOpen.
- voidonWriteDemand(WebSocket conn) - -
-           
- voidrun() - -
-           
- voidsend(java.lang.String text) - -
-          Sends text to the connected WebSocket server.
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.WebSocketAdapter
getFlashPolicy, onError, onHandshakeRecievedAsClient, onHandshakeRecievedAsServer, onMessage, onPing, onPong
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-WebSocketClient

-
-public WebSocketClient(java.net.URI serverURI)
-
-
-
- -

-WebSocketClient

-
-public WebSocketClient(java.net.URI serverUri,
-                       Draft draft)
-
-
Constructs a WebSocketClient instance and sets it to the connect to the - specified URI. The client does not attampt to connect automatically. You - must call connect first to initiate the socket connection. -

-

- - - - - - - - -
-Method Detail
- -

-getURI

-
-public java.net.URI getURI()
-
-
Gets the URI that this WebSocketClient is connected to. -

-

-
-
-
- -
Returns:
The URI for this WebSocketClient.
-
-
-
- -

-getDraft

-
-public Draft getDraft()
-
-
-
-
-
-
-
-
-
- -

-connect

-
-public void connect()
-
-
Starts a background thread that attempts and maintains a WebSocket - connection to the URI specified in the constructor or via setURI. - setURI. -

-

-
-
-
-
-
-
-
- -

-close

-
-public java.lang.Thread close()
-
-
Calls close on the underlying SocketChannel, which in turn - closes the socket connection, and ends the client socket thread. -

-

-
-
-
-
-
-
-
- -

-send

-
-public void send(java.lang.String text)
-          throws java.nio.channels.NotYetConnectedException,
-                 java.lang.InterruptedException
-
-
Sends text to the connected WebSocket server. -

-

-
-
-
-
Parameters:
text - The String to send to the WebSocket server. -
Throws: -
java.nio.channels.NotYetConnectedException -
java.lang.InterruptedException
-
-
-
- -

-run

-
-public void run()
-
-
-
Specified by:
run in interface java.lang.Runnable
-
-
-
-
-
-
- -

-onMessage

-
-public void onMessage(WebSocket conn,
-                      java.lang.String message)
-
-
Calls subclass' implementation of onMessage. -

-

-
Overrides:
onMessage in class WebSocketAdapter
-
-
-
Parameters:
conn -
message -
-
-
-
- -

-onOpen

-
-public void onOpen(WebSocket conn)
-
-
Calls subclass' implementation of onOpen. -

-

-
Overrides:
onOpen in class WebSocketAdapter
-
-
-
Parameters:
conn -
-
-
-
- -

-onClose

-
-public void onClose(WebSocket conn)
-
-
Calls subclass' implementation of onClose. -

-

-
Overrides:
onClose in class WebSocketAdapter
-
-
-
Parameters:
conn -
-
-
-
- -

-onError

-
-public void onError(WebSocket conn,
-                    java.io.IOException ex)
-
-
Calls subclass' implementation of onIOError. -

-

-
-
-
-
Parameters:
conn -
-
-
-
- -

-onWriteDemand

-
-public void onWriteDemand(WebSocket conn)
-
-
-
-
-
-
-
-
-
- -

-onMessage

-
-public abstract void onMessage(java.lang.String message)
-
-
-
-
-
-
-
-
-
- -

-onOpen

-
-public abstract void onOpen()
-
-
-
-
-
-
-
-
-
- -

-onClose

-
-public abstract void onClose()
-
-
-
-
-
-
-
-
-
- -

-onError

-
-public abstract void onError(java.lang.Exception ex)
-
-
-
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/WebSocketServer.html b/doc/net/tootallnate/websocket/WebSocketServer.html deleted file mode 100644 index c69f7f495..000000000 --- a/doc/net/tootallnate/websocket/WebSocketServer.html +++ /dev/null @@ -1,823 +0,0 @@ - - - - - - -WebSocketServer - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket -
-Class WebSocketServer

-
-java.lang.Object
-  extended by net.tootallnate.websocket.WebSocketAdapter
-      extended by net.tootallnate.websocket.WebSocketServer
-
-
-
All Implemented Interfaces:
java.lang.Runnable
-
-
-
-
public abstract class WebSocketServer
extends WebSocketAdapter
implements java.lang.Runnable
- - -

-WebSocketServer is an abstract class that only takes care of the - HTTP handshake portion of WebSockets. It's up to a subclass to add - functionality/purpose to the server. -

- -

-

-
Author:
-
Nathan Rajlich
-
-
- -

- - - - - - - - - - - - - - - - - -
-Constructor Summary
WebSocketServer() - -
-          Nullary constructor.
WebSocketServer(java.net.InetSocketAddress address) - -
-          Creates a WebSocketServer that will attempt to listen on port - port.
WebSocketServer(java.net.InetSocketAddress address, - Draft draft) - -
-          Creates a WebSocketServer that will attempt to listen on port port, - and comply with Draft version draft.
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- java.util.Set<WebSocket>connections() - -
-          Returns a WebSocket[] of currently connected clients.
- java.net.InetSocketAddressgetAddress() - -
-           
- DraftgetDraft() - -
-           
-protected  java.lang.StringgetFlashSecurityPolicy() - -
-          Gets the XML string that should be returned if a client requests a Flash - security policy.
- intgetPort() - -
-          Gets the port number that this server listens on.
-abstract  voidonClientClose(WebSocket conn) - -
-           
-abstract  voidonClientMessage(WebSocket conn, - java.lang.String message) - -
-           
-abstract  voidonClientOpen(WebSocket conn) - -
-           
- voidonClose(WebSocket conn) - -
-          Called after WebSocket#close is explicity called, or when the - other end of the WebSocket connection is closed.
-abstract  voidonError(WebSocket conn, - java.lang.Exception ex) - -
-           
- voidonMessage(WebSocket conn, - java.lang.String message) - -
-          Called when an entire text frame has been recieved.
- voidonOpen(WebSocket conn) - -
-          Called after onHandshakeRecieved returns true.
- voidonWriteDemand(WebSocket conn) - -
-           
- voidrun() - -
-           
- voidsendToAll(java.lang.String text) - -
-          Sends text to all currently connected WebSocket clients.
- voidsendToAllExcept(java.util.Set<WebSocket> connections, - java.lang.String text) - -
-          Sends text to all currently connected WebSocket clients, - except for those found in the Set connections.
- voidsendToAllExcept(WebSocket connection, - java.lang.String text) - -
-          Sends text to all currently connected WebSocket clients, - except for the specified connection.
- voidsetAddress(java.net.InetSocketAddress address) - -
-          Sets the port that this WebSocketServer should listen on.
- voidstart() - -
-          Starts the server thread that binds to the currently set port number and - listeners for WebSocket connection requests.
- voidstop() - -
-          Closes all connected clients sockets, then closes the underlying - ServerSocketChannel, effectively killing the server socket thread and - freeing the port the server was bound to.
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.WebSocketAdapter
getFlashPolicy, onHandshakeRecievedAsClient, onHandshakeRecievedAsServer, onMessage, onPing, onPong
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-WebSocketServer

-
-public WebSocketServer()
-                throws java.net.UnknownHostException
-
-
Nullary constructor. Creates a WebSocketServer that will attempt to - listen on port WebSocket.DEFAULT_PORT. -

-

- -
Throws: -
java.net.UnknownHostException
-
-
- -

-WebSocketServer

-
-public WebSocketServer(java.net.InetSocketAddress address)
-
-
Creates a WebSocketServer that will attempt to listen on port - port. -

-

-
Parameters:
port - The port number this server should listen on.
-
-
- -

-WebSocketServer

-
-public WebSocketServer(java.net.InetSocketAddress address,
-                       Draft draft)
-
-
Creates a WebSocketServer that will attempt to listen on port port, - and comply with Draft version draft. -

-

-
Parameters:
port - The port number this server should listen on.
draft - The version of the WebSocket protocol that this server - instance should comply to.
-
- - - - - - - - -
-Method Detail
- -

-start

-
-public void start()
-
-
Starts the server thread that binds to the currently set port number and - listeners for WebSocket connection requests. -

-

-
-
-
- -
Throws: -
java.lang.IllegalStateException
-
-
-
- -

-stop

-
-public void stop()
-          throws java.io.IOException
-
-
Closes all connected clients sockets, then closes the underlying - ServerSocketChannel, effectively killing the server socket thread and - freeing the port the server was bound to. -

-

-
-
-
- -
Throws: -
java.io.IOException - When socket related I/O errors occur.
-
-
-
- -

-sendToAll

-
-public void sendToAll(java.lang.String text)
-               throws java.lang.InterruptedException
-
-
Sends text to all currently connected WebSocket clients. -

-

-
-
-
-
Parameters:
text - The String to send across the network. -
Throws: -
java.io.IOException - When socket related I/O errors occur. -
java.lang.InterruptedException
-
-
-
- -

-sendToAllExcept

-
-public void sendToAllExcept(WebSocket connection,
-                            java.lang.String text)
-                     throws java.lang.InterruptedException
-
-
Sends text to all currently connected WebSocket clients, - except for the specified connection. -

-

-
-
-
-
Parameters:
connection - The WebSocket connection to ignore.
text - The String to send to every connection except connection. -
Throws: -
java.io.IOException - When socket related I/O errors occur. -
java.lang.InterruptedException
-
-
-
- -

-sendToAllExcept

-
-public void sendToAllExcept(java.util.Set<WebSocket> connections,
-                            java.lang.String text)
-                     throws java.lang.InterruptedException
-
-
Sends text to all currently connected WebSocket clients, - except for those found in the Set connections. -

-

-
-
-
-
Parameters:
connections -
text - -
Throws: -
java.io.IOException - When socket related I/O errors occur. -
java.lang.InterruptedException
-
-
-
- -

-connections

-
-public java.util.Set<WebSocket> connections()
-
-
Returns a WebSocket[] of currently connected clients. -

-

-
-
-
- -
Returns:
The currently connected clients in a WebSocket[].
-
-
-
- -

-setAddress

-
-public void setAddress(java.net.InetSocketAddress address)
-
-
Sets the port that this WebSocketServer should listen on. -

-

-
-
-
-
Parameters:
port - The port number to listen on.
-
-
-
- -

-getAddress

-
-public java.net.InetSocketAddress getAddress()
-
-
-
-
-
-
-
-
-
- -

-getPort

-
-public int getPort()
-
-
Gets the port number that this server listens on. -

-

-
-
-
- -
Returns:
The port number.
-
-
-
- -

-getDraft

-
-public Draft getDraft()
-
-
-
-
-
-
-
-
-
- -

-run

-
-public void run()
-
-
-
Specified by:
run in interface java.lang.Runnable
-
-
-
-
-
-
- -

-getFlashSecurityPolicy

-
-protected java.lang.String getFlashSecurityPolicy()
-
-
Gets the XML string that should be returned if a client requests a Flash - security policy. - - The default implementation allows access from all remote domains, but - only on the port that this WebSocketServer is listening on. - - This is specifically implemented for gitime's WebSocket client for Flash: - http://github.com/gimite/web-socket-js -

-

-
-
-
- -
Returns:
An XML String that comforms to Flash's security policy. You MUST - not include the null char at the end, it is appended automatically.
-
-
-
- -

-onMessage

-
-public void onMessage(WebSocket conn,
-                      java.lang.String message)
-
-
Called when an entire text frame has been recieved. Do whatever you want - here... -

-

-
Overrides:
onMessage in class WebSocketAdapter
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
message - The UTF-8 decoded message that was recieved.
-
-
-
- -

-onOpen

-
-public void onOpen(WebSocket conn)
-
-
Called after onHandshakeRecieved returns true. - Indicates that a complete WebSocket connection has been established, - and we are ready to send/recieve data. -

-

-
Overrides:
onOpen in class WebSocketAdapter
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
-
-
-
- -

-onClose

-
-public void onClose(WebSocket conn)
-
-
Called after WebSocket#close is explicity called, or when the - other end of the WebSocket connection is closed. -

-

-
Overrides:
onClose in class WebSocketAdapter
-
-
-
Parameters:
conn - The WebSocket instance this event is occuring on.
-
-
-
- -

-onWriteDemand

-
-public void onWriteDemand(WebSocket conn)
-
-
-
-
-
-
-
-
-
- -

-onClientOpen

-
-public abstract void onClientOpen(WebSocket conn)
-
-
-
-
-
-
-
-
-
- -

-onClientClose

-
-public abstract void onClientClose(WebSocket conn)
-
-
-
-
-
-
-
-
-
- -

-onClientMessage

-
-public abstract void onClientMessage(WebSocket conn,
-                                     java.lang.String message)
-
-
-
-
-
-
-
-
-
- -

-onError

-
-public abstract void onError(WebSocket conn,
-                             java.lang.Exception ex)
-
-
-
Overrides:
onError in class WebSocketAdapter
-
-
-
Parameters:
conn - may be null if the error does not belong to a single connection
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/drafts/Draft_10.html b/doc/net/tootallnate/websocket/drafts/Draft_10.html deleted file mode 100644 index 35bf88003..000000000 --- a/doc/net/tootallnate/websocket/drafts/Draft_10.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - - - -Draft_10 - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket.drafts -
-Class Draft_10

-
-java.lang.Object
-  extended by net.tootallnate.websocket.Draft
-      extended by net.tootallnate.websocket.drafts.Draft_10
-
-
-
Direct Known Subclasses:
Draft_17
-
-
-
-
public class Draft_10
extends Draft
- - -

-


- -

- - - - - - - -
-Nested Class Summary
- - - - - - - -
Nested classes/interfaces inherited from class net.tootallnate.websocket.Draft
Draft.HandshakeState
-  - - - - - - - -
-Field Summary
- - - - - - - -
Fields inherited from class net.tootallnate.websocket.Draft
role
-  - - - - - - - - - - -
-Constructor Summary
Draft_10() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- Draft.HandshakeStateacceptHandshakeAsClient(Handshakedata request, - Handshakedata response) - -
-           
- Draft.HandshakeStateacceptHandshakeAsServer(Handshakedata handshakedata) - -
-           
- java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) - -
-           
- java.util.List<Framedata>createFrames(byte[] binary, - boolean mask) - -
-           
- java.util.List<Framedata>createFrames(java.lang.String text, - boolean mask) - -
-           
- HandshakeBuilderpostProcessHandshakeRequestAsClient(HandshakeBuilder request) - -
-           
- HandshakeBuilderpostProcessHandshakeResponseAsServer(Handshakedata request, - HandshakeBuilder response) - -
-           
-static intreadVersion(Handshakedata handshakedata) - -
-           
- voidreset() - -
-           
- java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) - -
-           
- FramedatatranslateSingleFrame(java.nio.ByteBuffer buffer) - -
-           
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-Draft_10

-
-public Draft_10()
-
-
- - - - - - - - -
-Method Detail
- -

-readVersion

-
-public static int readVersion(Handshakedata handshakedata)
-
-
-
-
-
-
- -

-acceptHandshakeAsClient

-
-public Draft.HandshakeState acceptHandshakeAsClient(Handshakedata request,
-                                                    Handshakedata response)
-                                             throws InvalidHandshakeException
-
-
-
Specified by:
acceptHandshakeAsClient in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-acceptHandshakeAsServer

-
-public Draft.HandshakeState acceptHandshakeAsServer(Handshakedata handshakedata)
-                                             throws InvalidHandshakeException
-
-
-
Specified by:
acceptHandshakeAsServer in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-createBinaryFrame

-
-public java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
-
-
-
Specified by:
createBinaryFrame in class Draft
-
-
-
-
-
-
- -

-createFrames

-
-public java.util.List<Framedata> createFrames(byte[] binary,
-                                              boolean mask)
-
-
-
Specified by:
createFrames in class Draft
-
-
-
-
-
-
- -

-createFrames

-
-public java.util.List<Framedata> createFrames(java.lang.String text,
-                                              boolean mask)
-
-
-
Specified by:
createFrames in class Draft
-
-
-
-
-
-
- -

-postProcessHandshakeRequestAsClient

-
-public HandshakeBuilder postProcessHandshakeRequestAsClient(HandshakeBuilder request)
-
-
-
Specified by:
postProcessHandshakeRequestAsClient in class Draft
-
-
-
-
-
-
- -

-postProcessHandshakeResponseAsServer

-
-public HandshakeBuilder postProcessHandshakeResponseAsServer(Handshakedata request,
-                                                             HandshakeBuilder response)
-                                                      throws InvalidHandshakeException
-
-
-
Specified by:
postProcessHandshakeResponseAsServer in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-translateFrame

-
-public java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
-                                         throws LimitExedeedException,
-                                                InvalidDataException
-
-
-
Specified by:
translateFrame in class Draft
-
-
- -
Throws: -
LimitExedeedException -
InvalidDataException
-
-
-
- -

-translateSingleFrame

-
-public Framedata translateSingleFrame(java.nio.ByteBuffer buffer)
-                               throws net.tootallnate.websocket.drafts.Draft_10.IncompleteException,
-                                      InvalidDataException
-
-
- -
Throws: -
net.tootallnate.websocket.drafts.Draft_10.IncompleteException -
InvalidDataException
-
-
-
- -

-reset

-
-public void reset()
-
-
-
Specified by:
reset in class Draft
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/drafts/Draft_17.html b/doc/net/tootallnate/websocket/drafts/Draft_17.html deleted file mode 100644 index c89c317a8..000000000 --- a/doc/net/tootallnate/websocket/drafts/Draft_17.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - -Draft_17 - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket.drafts -
-Class Draft_17

-
-java.lang.Object
-  extended by net.tootallnate.websocket.Draft
-      extended by net.tootallnate.websocket.drafts.Draft_10
-          extended by net.tootallnate.websocket.drafts.Draft_17
-
-
-
-
public class Draft_17
extends Draft_10
- - -

-


- -

- - - - - - - -
-Nested Class Summary
- - - - - - - -
Nested classes/interfaces inherited from class net.tootallnate.websocket.Draft
Draft.HandshakeState
-  - - - - - - - -
-Field Summary
- - - - - - - -
Fields inherited from class net.tootallnate.websocket.Draft
role
-  - - - - - - - - - - -
-Constructor Summary
Draft_17() - -
-           
-  - - - - - - - - - - - - - - - -
-Method Summary
- Draft.HandshakeStateacceptHandshakeAsServer(Handshakedata handshakedata) - -
-           
- HandshakeBuilderpostProcessHandshakeRequestAsClient(HandshakeBuilder request) - -
-           
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.drafts.Draft_10
acceptHandshakeAsClient, createBinaryFrame, createFrames, createFrames, postProcessHandshakeResponseAsServer, readVersion, reset, translateFrame, translateSingleFrame
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-Draft_17

-
-public Draft_17()
-
-
- - - - - - - - -
-Method Detail
- -

-acceptHandshakeAsServer

-
-public Draft.HandshakeState acceptHandshakeAsServer(Handshakedata handshakedata)
-                                             throws InvalidHandshakeException
-
-
-
Overrides:
acceptHandshakeAsServer in class Draft_10
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-postProcessHandshakeRequestAsClient

-
-public HandshakeBuilder postProcessHandshakeRequestAsClient(HandshakeBuilder request)
-
-
-
Overrides:
postProcessHandshakeRequestAsClient in class Draft_10
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/drafts/Draft_75.html b/doc/net/tootallnate/websocket/drafts/Draft_75.html deleted file mode 100644 index 8bb238b3f..000000000 --- a/doc/net/tootallnate/websocket/drafts/Draft_75.html +++ /dev/null @@ -1,585 +0,0 @@ - - - - - - -Draft_75 - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket.drafts -
-Class Draft_75

-
-java.lang.Object
-  extended by net.tootallnate.websocket.Draft
-      extended by net.tootallnate.websocket.drafts.Draft_75
-
-
-
Direct Known Subclasses:
Draft_76
-
-
-
-
public class Draft_75
extends Draft
- - -

-


- -

- - - - - - - -
-Nested Class Summary
- - - - - - - -
Nested classes/interfaces inherited from class net.tootallnate.websocket.Draft
Draft.HandshakeState
-  - - - - - - - - - - - - - - - - - - - - - - - -
-Field Summary
-static byteCR - -
-          The byte representing CR, or Carriage Return, or \r
-static byteEND_OF_FRAME - -
-          The byte representing the end of a WebSocket text frame.
-static byteLF - -
-          The byte representing LF, or Line Feed, or \n
-static byteSTART_OF_FRAME - -
-          The byte representing the beginning of a WebSocket text frame.
- - - - - - - -
Fields inherited from class net.tootallnate.websocket.Draft
role
-  - - - - - - - - - - -
-Constructor Summary
Draft_75() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- Draft.HandshakeStateacceptHandshakeAsClient(Handshakedata request, - Handshakedata response) - -
-           
- Draft.HandshakeStateacceptHandshakeAsServer(Handshakedata handshakedata) - -
-           
- java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) - -
-           
- java.util.List<Framedata>createFrames(byte[] binary, - boolean mask) - -
-           
- java.util.List<Framedata>createFrames(java.lang.String text, - boolean mask) - -
-           
- HandshakeBuilderpostProcessHandshakeRequestAsClient(HandshakeBuilder request) - -
-           
- HandshakeBuilderpostProcessHandshakeResponseAsServer(Handshakedata request, - HandshakeBuilder response) - -
-           
- voidreset() - -
-           
- java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) - -
-           
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Field Detail
- -

-CR

-
-public static final byte CR
-
-
The byte representing CR, or Carriage Return, or \r -

-

-
See Also:
Constant Field Values
-
-
- -

-LF

-
-public static final byte LF
-
-
The byte representing LF, or Line Feed, or \n -

-

-
See Also:
Constant Field Values
-
-
- -

-START_OF_FRAME

-
-public static final byte START_OF_FRAME
-
-
The byte representing the beginning of a WebSocket text frame. -

-

-
See Also:
Constant Field Values
-
-
- -

-END_OF_FRAME

-
-public static final byte END_OF_FRAME
-
-
The byte representing the end of a WebSocket text frame. -

-

-
See Also:
Constant Field Values
-
- - - - - - - - -
-Constructor Detail
- -

-Draft_75

-
-public Draft_75()
-
-
- - - - - - - - -
-Method Detail
- -

-acceptHandshakeAsClient

-
-public Draft.HandshakeState acceptHandshakeAsClient(Handshakedata request,
-                                                    Handshakedata response)
-
-
-
Specified by:
acceptHandshakeAsClient in class Draft
-
-
-
-
-
-
- -

-acceptHandshakeAsServer

-
-public Draft.HandshakeState acceptHandshakeAsServer(Handshakedata handshakedata)
-
-
-
Specified by:
acceptHandshakeAsServer in class Draft
-
-
-
-
-
-
- -

-createBinaryFrame

-
-public java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
-
-
-
Specified by:
createBinaryFrame in class Draft
-
-
-
-
-
-
- -

-createFrames

-
-public java.util.List<Framedata> createFrames(byte[] binary,
-                                              boolean mask)
-
-
-
Specified by:
createFrames in class Draft
-
-
-
-
-
-
- -

-createFrames

-
-public java.util.List<Framedata> createFrames(java.lang.String text,
-                                              boolean mask)
-
-
-
Specified by:
createFrames in class Draft
-
-
-
-
-
-
- -

-postProcessHandshakeRequestAsClient

-
-public HandshakeBuilder postProcessHandshakeRequestAsClient(HandshakeBuilder request)
-                                                     throws InvalidHandshakeException
-
-
-
Specified by:
postProcessHandshakeRequestAsClient in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-postProcessHandshakeResponseAsServer

-
-public HandshakeBuilder postProcessHandshakeResponseAsServer(Handshakedata request,
-                                                             HandshakeBuilder response)
-                                                      throws InvalidHandshakeException
-
-
-
Specified by:
postProcessHandshakeResponseAsServer in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-translateFrame

-
-public java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
-                                         throws InvalidDataException
-
-
-
Specified by:
translateFrame in class Draft
-
-
- -
Throws: -
InvalidDataException
-
-
-
- -

-reset

-
-public void reset()
-
-
-
Specified by:
reset in class Draft
-
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/drafts/Draft_76.html b/doc/net/tootallnate/websocket/drafts/Draft_76.html deleted file mode 100644 index dd0b88ef0..000000000 --- a/doc/net/tootallnate/websocket/drafts/Draft_76.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - - - -Draft_76 - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- -

- -net.tootallnate.websocket.drafts -
-Class Draft_76

-
-java.lang.Object
-  extended by net.tootallnate.websocket.Draft
-      extended by net.tootallnate.websocket.drafts.Draft_75
-          extended by net.tootallnate.websocket.drafts.Draft_76
-
-
-
-
public class Draft_76
extends Draft_75
- - -

-


- -

- - - - - - - -
-Nested Class Summary
- - - - - - - -
Nested classes/interfaces inherited from class net.tootallnate.websocket.Draft
Draft.HandshakeState
-  - - - - - - - -
-Field Summary
- - - - - - - -
Fields inherited from class net.tootallnate.websocket.drafts.Draft_75
CR, END_OF_FRAME, LF, START_OF_FRAME
- - - - - - - -
Fields inherited from class net.tootallnate.websocket.Draft
role
-  - - - - - - - - - - -
-Constructor Summary
Draft_76() - -
-           
-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Method Summary
- Draft.HandshakeStateacceptHandshakeAsClient(Handshakedata request, - Handshakedata response) - -
-           
- Draft.HandshakeStateacceptHandshakeAsServer(Handshakedata handshakedata) - -
-           
-static byte[]createChallenge(java.lang.String key1, - java.lang.String key2, - byte[] key3) - -
-           
- HandshakeBuilderpostProcessHandshakeRequestAsClient(HandshakeBuilder request) - -
-           
- HandshakeBuilderpostProcessHandshakeResponseAsServer(Handshakedata request, - HandshakeBuilder response) - -
-           
- HandshakedatatranslateHandshake(java.nio.ByteBuffer buf) - -
-           
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.drafts.Draft_75
createBinaryFrame, createFrames, createFrames, reset, translateFrame
- - - - - - - -
Methods inherited from class net.tootallnate.websocket.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshakeHttp
- - - - - - - -
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-  -

- - - - - - - - -
-Constructor Detail
- -

-Draft_76

-
-public Draft_76()
-
-
- - - - - - - - -
-Method Detail
- -

-createChallenge

-
-public static byte[] createChallenge(java.lang.String key1,
-                                     java.lang.String key2,
-                                     byte[] key3)
-                              throws InvalidHandshakeException
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-acceptHandshakeAsClient

-
-public Draft.HandshakeState acceptHandshakeAsClient(Handshakedata request,
-                                                    Handshakedata response)
-
-
-
Overrides:
acceptHandshakeAsClient in class Draft_75
-
-
-
-
-
-
- -

-acceptHandshakeAsServer

-
-public Draft.HandshakeState acceptHandshakeAsServer(Handshakedata handshakedata)
-
-
-
Overrides:
acceptHandshakeAsServer in class Draft_75
-
-
-
-
-
-
- -

-postProcessHandshakeRequestAsClient

-
-public HandshakeBuilder postProcessHandshakeRequestAsClient(HandshakeBuilder request)
-
-
-
Overrides:
postProcessHandshakeRequestAsClient in class Draft_75
-
-
-
-
-
-
- -

-postProcessHandshakeResponseAsServer

-
-public HandshakeBuilder postProcessHandshakeResponseAsServer(Handshakedata request,
-                                                             HandshakeBuilder response)
-                                                      throws InvalidHandshakeException
-
-
-
Overrides:
postProcessHandshakeResponseAsServer in class Draft_75
-
-
- -
Throws: -
InvalidHandshakeException
-
-
-
- -

-translateHandshake

-
-public Handshakedata translateHandshake(java.nio.ByteBuffer buf)
-                                 throws InvalidHandshakeException
-
-
-
Overrides:
translateHandshake in class Draft
-
-
- -
Throws: -
InvalidHandshakeException
-
-
- -
- - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/doc/net/tootallnate/websocket/drafts/package-frame.html b/doc/net/tootallnate/websocket/drafts/package-frame.html deleted file mode 100644 index 622069242..000000000 --- a/doc/net/tootallnate/websocket/drafts/package-frame.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -net.tootallnate.websocket.drafts - - - - - - - - - - - -net.tootallnate.websocket.drafts - - - - -
-Classes  - -
-Draft_10 -
-Draft_17 -
-Draft_75 -
-Draft_76
- - - - diff --git a/doc/net/tootallnate/websocket/exeptions/package-frame.html b/doc/net/tootallnate/websocket/exeptions/package-frame.html deleted file mode 100644 index ff959622a..000000000 --- a/doc/net/tootallnate/websocket/exeptions/package-frame.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -net.tootallnate.websocket.exeptions - - - - - - - - - - - -net.tootallnate.websocket.exeptions - - - - -
-Exceptions  - -
-IncompleteHandshakeException -
-InvalidDataException -
-InvalidFrameException -
-InvalidHandshakeException -
-LimitExedeedException
- - - - diff --git a/doc/net/tootallnate/websocket/package-frame.html b/doc/net/tootallnate/websocket/package-frame.html deleted file mode 100644 index b3c65dc94..000000000 --- a/doc/net/tootallnate/websocket/package-frame.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -net.tootallnate.websocket - - - - - - - - - - - -net.tootallnate.websocket - - - - -
-Interfaces  - -
-FrameBuilder -
-Framedata -
-HandshakeBuilder -
-Handshakedata
- - - - - - -
-Classes  - -
-Base64 -
-Base64.InputStream -
-Base64.OutputStream -
-Charsetfunctions -
-Draft -
-FramedataImpl1 -
-HandshakedataImpl1 -
-WebSocket -
-WebSocketAdapter -
-WebSocketClient -
-WebSocketServer
- - - - - - -
-Enums  - -
-Draft.HandshakeState -
-Framedata.Opcode -
-WebSocket.Role
- - - - diff --git a/doc/org/java_websocket/WebSocket.Role.html b/doc/org/java_websocket/WebSocket.Role.html new file mode 100644 index 000000000..08934449e --- /dev/null +++ b/doc/org/java_websocket/WebSocket.Role.html @@ -0,0 +1,323 @@ + + + + + + +WebSocket.Role + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Enum WebSocket.Role

+
+java.lang.Object
+  extended by java.lang.Enum<WebSocket.Role>
+      extended by org.java_websocket.WebSocket.Role
+
+
+
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable<WebSocket.Role>
+
+
+
Enclosing class:
WebSocket
+
+
+
+
public static enum WebSocket.Role
extends java.lang.Enum<WebSocket.Role>
+ + +

+


+ +

+ + + + + + + + + + + + + +
+Enum Constant Summary
CLIENT + +
+           
SERVER + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static WebSocket.RolevalueOf(java.lang.String name) + +
+          Returns the enum constant of this type with the specified name.
+static WebSocket.Role[]values() + +
+          Returns an array containing the constants of this enum type, in +the order they are declared.
+ + + + + + + +
Methods inherited from class java.lang.Enum
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
+ + + + + + + +
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Enum Constant Detail
+ +

+CLIENT

+
+public static final WebSocket.Role CLIENT
+
+
+
+
+
+ +

+SERVER

+
+public static final WebSocket.Role SERVER
+
+
+
+
+ + + + + + + + +
+Method Detail
+ +

+values

+
+public static WebSocket.Role[] values()
+
+
Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
+for (WebSocket.Role c : WebSocket.Role.values())
+    System.out.println(c);
+
+

+

+ +
Returns:
an array containing the constants of this enum type, in +the order they are declared
+
+
+
+ +

+valueOf

+
+public static WebSocket.Role valueOf(java.lang.String name)
+
+
Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.) +

+

+
Parameters:
name - the name of the enum constant to be returned. +
Returns:
the enum constant with the specified name +
Throws: +
java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name +
java.lang.NullPointerException - if the argument is null
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocket.html b/doc/org/java_websocket/WebSocket.html new file mode 100644 index 000000000..623a1a8d3 --- /dev/null +++ b/doc/org/java_websocket/WebSocket.html @@ -0,0 +1,903 @@ + + + + + + +WebSocket + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Class WebSocket

+
+java.lang.Object
+  extended by org.java_websocket.WebSocket
+
+
+
+
public final class WebSocket
extends java.lang.Object
+ + +

+Represents one end (client or server) of a single WebSocket connection. + Takes care of the "handshake" phase, then allows for easy sending of + text frames, and receiving frames through an event-based model. + + This is an inner class, used by WebSocketClient and WebSocketServer, and should never need to be instantiated directly + by your code. However, instances are exposed in WebSocketServer through the onClientOpen, onClientClose, + onClientMessage callbacks. +

+ +

+

+
Author:
+
Nathan Rajlich
+
+
+ +

+ + + + + + + + + + + +
+Nested Class Summary
+static classWebSocket.Role + +
+           
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static booleanDEBUG + +
+           
+static intDEFAULT_PORT + +
+          The default port of WebSockets, as defined in the spec.
+ java.util.List<Draft>known_drafts + +
+           
+static intREADY_STATE_CLOSED + +
+           
+static intREADY_STATE_CLOSING + +
+           
+static intREADY_STATE_CONNECTING + +
+           
+static intREADY_STATE_OPEN + +
+           
+  + + + + + + + + + + + + + +
+Constructor Summary
WebSocket(WebSocketListener listener, + Draft draft, + java.nio.channels.SocketChannel socketchannel) + +
+          Used in WebSocketServer and WebSocketClient.
WebSocket(WebSocketListener listener, + java.util.List<Draft> drafts, + java.nio.channels.SocketChannel socketchannel) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidclose(int code) + +
+           
+ voidclose(int code, + java.lang.String message) + +
+          sends the closing handshake.
+ voidclose(InvalidDataException e) + +
+           
+ voidcloseConnection(int code, + boolean remote) + +
+           
+ voidcloseConnection(int code, + java.lang.String message, + boolean remote) + +
+          closes the socket no matter if the closing handshake completed.
+ voidcloseDirect(int code, + java.lang.String message) + +
+           
+ voidflush() + +
+          Empty the internal buffer, sending all the pending data before continuing.
+ java.net.InetSocketAddressgetLocalSocketAddress() + +
+           
+ intgetReadyState() + +
+          Retrieve the WebSocket 'readyState'.
+ java.net.InetSocketAddressgetRemoteSocketAddress() + +
+           
+ inthashCode() + +
+           
+ booleanisClosed() + +
+           
+ booleanisClosing() + +
+           
+ booleanisConnecting() + +
+           
+ Draft.HandshakeStateisFlashEdgeCase(java.nio.ByteBuffer request) + +
+           
+ booleanisOpen() + +
+           
+ voidsend(byte[] bytes) + +
+          Send Binary data (plain bytes) to the other end.
+ voidsend(java.lang.String text) + +
+          Send Text data to the other end.
+ voidsendFrame(Framedata framedata) + +
+           
+ voidstartHandshake(ClientHandshakeBuilder handshakedata) + +
+           
+ java.lang.StringtoString() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+READY_STATE_CONNECTING

+
+public static final int READY_STATE_CONNECTING
+
+
+
See Also:
Constant Field Values
+
+
+ +

+READY_STATE_OPEN

+
+public static final int READY_STATE_OPEN
+
+
+
See Also:
Constant Field Values
+
+
+ +

+READY_STATE_CLOSING

+
+public static final int READY_STATE_CLOSING
+
+
+
See Also:
Constant Field Values
+
+
+ +

+READY_STATE_CLOSED

+
+public static final int READY_STATE_CLOSED
+
+
+
See Also:
Constant Field Values
+
+
+ +

+DEFAULT_PORT

+
+public static final int DEFAULT_PORT
+
+
The default port of WebSockets, as defined in the spec. If the nullary + constructor is used, DEFAULT_PORT will be the port the WebSocketServer + is binded to. Note that ports under 1024 usually require root permissions. +

+

+
See Also:
Constant Field Values
+
+
+ +

+DEBUG

+
+public static boolean DEBUG
+
+
+
+
+
+ +

+known_drafts

+
+public java.util.List<Draft> known_drafts
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+WebSocket

+
+public WebSocket(WebSocketListener listener,
+                 Draft draft,
+                 java.nio.channels.SocketChannel socketchannel)
+
+
Used in WebSocketServer and WebSocketClient. +

+

+
Parameters:
socketchannel - The SocketChannel instance to read and + write to. The channel should already be registered + with a Selector before construction of this object.
listener - The WebSocketListener to notify of events when + they occur.
+
+
+ +

+WebSocket

+
+public WebSocket(WebSocketListener listener,
+                 java.util.List<Draft> drafts,
+                 java.nio.channels.SocketChannel socketchannel)
+
+
+ + + + + + + + +
+Method Detail
+ +

+close

+
+public void close(int code,
+                  java.lang.String message)
+
+
sends the closing handshake. + may be send in response to an other handshake. +

+

+
+
+
+
+ +

+closeDirect

+
+public void closeDirect(int code,
+                        java.lang.String message)
+                 throws java.io.IOException
+
+
+ +
Throws: +
java.io.IOException
+
+
+
+ +

+closeConnection

+
+public void closeConnection(int code,
+                            java.lang.String message,
+                            boolean remote)
+
+
closes the socket no matter if the closing handshake completed. + Does not send any not yet written data before closing. + Calling this method more than once will have no effect. +

+

+
Parameters:
remote - Indicates who "generated" code.
+ true means that this endpoint received the code from the other endpoint.
+ false means this endpoint decided to send the given code,
+ remote may also be true if this endpoint started the closing handshake since the other endpoint may not simply echo the code but close the connection the same time this endpoint does do but with an other code.
+
+
+
+ +

+closeConnection

+
+public void closeConnection(int code,
+                            boolean remote)
+
+
+
+
+
+
+ +

+close

+
+public void close(int code)
+
+
+
+
+
+
+ +

+close

+
+public void close(InvalidDataException e)
+
+
+
+
+
+
+ +

+send

+
+public void send(java.lang.String text)
+          throws java.lang.IllegalArgumentException,
+                 java.nio.channels.NotYetConnectedException,
+                 java.lang.InterruptedException
+
+
Send Text data to the other end. +

+

+ +
Throws: +
java.lang.IllegalArgumentException +
java.lang.InterruptedException +
java.nio.channels.NotYetConnectedException
+
+
+
+ +

+send

+
+public void send(byte[] bytes)
+          throws java.lang.IllegalArgumentException,
+                 java.nio.channels.NotYetConnectedException,
+                 java.lang.InterruptedException
+
+
Send Binary data (plain bytes) to the other end. +

+

+ +
Throws: +
java.lang.IllegalArgumentException +
java.lang.InterruptedException +
java.nio.channels.NotYetConnectedException
+
+
+
+ +

+sendFrame

+
+public void sendFrame(Framedata framedata)
+               throws java.lang.InterruptedException
+
+
+ +
Throws: +
java.lang.InterruptedException
+
+
+
+ +

+flush

+
+public void flush()
+           throws java.io.IOException
+
+
Empty the internal buffer, sending all the pending data before continuing. +

+

+ +
Throws: +
java.io.IOException
+
+
+
+ +

+isFlashEdgeCase

+
+public Draft.HandshakeState isFlashEdgeCase(java.nio.ByteBuffer request)
+
+
+
+
+
+
+ +

+startHandshake

+
+public void startHandshake(ClientHandshakeBuilder handshakedata)
+                    throws InvalidHandshakeException,
+                           java.lang.InterruptedException
+
+
+ +
Throws: +
InvalidHandshakeException +
java.lang.InterruptedException
+
+
+
+ +

+getRemoteSocketAddress

+
+public java.net.InetSocketAddress getRemoteSocketAddress()
+
+
+
+
+
+
+ +

+getLocalSocketAddress

+
+public java.net.InetSocketAddress getLocalSocketAddress()
+
+
+
+
+
+
+ +

+isConnecting

+
+public boolean isConnecting()
+
+
+
+
+
+
+ +

+isOpen

+
+public boolean isOpen()
+
+
+
+
+
+
+ +

+isClosing

+
+public boolean isClosing()
+
+
+
+
+
+
+ +

+isClosed

+
+public boolean isClosed()
+
+
+
+
+
+
+ +

+getReadyState

+
+public int getReadyState()
+
+
Retrieve the WebSocket 'readyState'. + This represents the state of the connection. + It returns a numerical value, as per W3C WebSockets specs. +

+

+ +
Returns:
Returns '0 = CONNECTING', '1 = OPEN', '2 = CLOSING' or '3 = CLOSED'
+
+
+
+ +

+hashCode

+
+public int hashCode()
+
+
+
Overrides:
hashCode in class java.lang.Object
+
+
+
+
+
+
+ +

+toString

+
+public java.lang.String toString()
+
+
+
Overrides:
toString in class java.lang.Object
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocketAdapter.html b/doc/org/java_websocket/WebSocketAdapter.html new file mode 100644 index 000000000..ac47dfda1 --- /dev/null +++ b/doc/org/java_websocket/WebSocketAdapter.html @@ -0,0 +1,665 @@ + + + + + + +WebSocketAdapter + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Class WebSocketAdapter

+
+java.lang.Object
+  extended by org.java_websocket.WebSocketAdapter
+
+
+
All Implemented Interfaces:
WebSocketListener
+
+
+
Direct Known Subclasses:
WebSocketClient, WebSocketServer
+
+
+
+
public abstract class WebSocketAdapter
extends java.lang.Object
implements WebSocketListener
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from interface org.java_websocket.WebSocketListener
WebSocketListener.MessageType
+  + + + + + + + + + + + +
+Constructor Summary
WebSocketAdapter() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidconnectTiming(java.util.Date startTime, + java.util.Date endTime) + +
+          This default implementation does not do anything.
+ java.lang.StringgetFlashPolicy(WebSocket conn) + +
+          Gets the XML string that should be returned if a client requests a Flash + security policy.
+ voidmessageReceiveTiming(java.util.Date startTime, + java.util.Date endTime, + WebSocketListener.MessageType type, + int bytesAmount) + +
+          This default implementation does not do anything.
+ voidmessageSendTiming(java.util.Date startTime, + java.util.Date endTime, + WebSocketListener.MessageType type, + int bytesAmount) + +
+          This default implementation does not do anything.
+ voidonWebsocketClose(WebSocket conn, + int code, + java.lang.String reason, + boolean remote) + +
+          This default implementation does not do anything.
+ voidonWebsocketError(WebSocket conn, + java.lang.Exception ex) + +
+          This default implementation does not do anything.
+ voidonWebsocketHandshakeReceivedAsClient(WebSocket conn, + ClientHandshake request, + ServerHandshake response) + +
+          This default implementation does not do anything which will cause connections to be accepted.
+ ServerHandshakeBuilderonWebsocketHandshakeReceivedAsServer(WebSocket conn, + Draft draft, + ClientHandshake request) + +
+          This default implementation does not do anything.
+ voidonWebsocketHandshakeSentAsClient(WebSocket conn, + ClientHandshake request) + +
+          This default implementation does not do anything which will cause the connections to always progress.
+ voidonWebsocketMessage(WebSocket conn, + byte[] blob) + +
+          This default implementation does not do anything.
+ voidonWebsocketMessage(WebSocket conn, + java.lang.String message) + +
+          This default implementation does not do anything.
+ voidonWebsocketOpen(WebSocket conn, + Handshakedata handshake) + +
+          This default implementation does not do anything.
+ voidonWebsocketPing(WebSocket conn, + Framedata f) + +
+          This default implementation will send a pong in response to the received ping.
+ voidonWebsocketPong(WebSocket conn, + Framedata f) + +
+          This default implementation does not do anything.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.java_websocket.WebSocketListener
onWriteDemand
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebSocketAdapter

+
+public WebSocketAdapter()
+
+
+ + + + + + + + +
+Method Detail
+ +

+onWebsocketHandshakeReceivedAsServer

+
+public ServerHandshakeBuilder onWebsocketHandshakeReceivedAsServer(WebSocket conn,
+                                                                   Draft draft,
+                                                                   ClientHandshake request)
+                                                            throws InvalidDataException
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketHandshakeReceivedAsServer in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket related to this event
draft - The protocol draft the client uses to connect
request - The opening http message send by the client. Can be used to access additional fields like cookies. +
Returns:
Returns an incomplete handshake containing all optional fields +
Throws: +
InvalidDataException - Throwing this exception will cause this handshake to be rejected
See Also:
WebSocketListener.onWebsocketHandshakeReceivedAsServer(WebSocket, Draft, ClientHandshake)
+
+
+
+ +

+onWebsocketHandshakeReceivedAsClient

+
+public void onWebsocketHandshakeReceivedAsClient(WebSocket conn,
+                                                 ClientHandshake request,
+                                                 ServerHandshake response)
+                                          throws InvalidDataException
+
+
This default implementation does not do anything which will cause connections to be accepted. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketHandshakeReceivedAsClient in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket related to this event
request - The handshake initially send out to the server by this websocket.
response - The handshake the server sent in response to the request. +
Throws: +
InvalidDataException - Allows the client to reject the connection with the server in respect of its handshake response.
See Also:
WebSocketListener.onWebsocketHandshakeReceivedAsClient(WebSocket, ClientHandshake, ServerHandshake)
+
+
+
+ +

+onWebsocketHandshakeSentAsClient

+
+public void onWebsocketHandshakeSentAsClient(WebSocket conn,
+                                             ClientHandshake request)
+                                      throws InvalidDataException
+
+
This default implementation does not do anything which will cause the connections to always progress. +

+

+
Specified by:
onWebsocketHandshakeSentAsClient in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket related to this event
request - The handshake sent to the server by this websocket +
Throws: +
InvalidDataException - Allows the client to stop the connection from progressing
See Also:
WebSocketListener.onWebsocketHandshakeSentAsClient(WebSocket, ClientHandshake)
+
+
+
+ +

+onWebsocketMessage

+
+public void onWebsocketMessage(WebSocket conn,
+                               java.lang.String message)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket instance this event is occurring on.
message - The UTF-8 decoded message that was received.
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, String)
+
+
+
+ +

+onWebsocketOpen

+
+public void onWebsocketOpen(WebSocket conn,
+                            Handshakedata handshake)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketOpen in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket instance this event is occuring on.
See Also:
WebSocketListener.onWebsocketOpen(WebSocket, Handshakedata)
+
+
+
+ +

+onWebsocketClose

+
+public void onWebsocketClose(WebSocket conn,
+                             int code,
+                             java.lang.String reason,
+                             boolean remote)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketClose in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket instance this event is occuring on.
See Also:
WebSocketListener.onWebsocketClose(WebSocket, int, String, boolean)
+
+
+
+ +

+onWebsocketMessage

+
+public void onWebsocketMessage(WebSocket conn,
+                               byte[] blob)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
+
+
+
Parameters:
conn - The WebSocket instance this event is occurring on.
blob - The binary message that was received.
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, byte[])
+
+
+
+ +

+onWebsocketPing

+
+public void onWebsocketPing(WebSocket conn,
+                            Framedata f)
+
+
This default implementation will send a pong in response to the received ping. + The pong frame will have the same payload as the ping frame. +

+

+
Specified by:
onWebsocketPing in interface WebSocketListener
+
+
+
f - The ping frame. Control frames may contain payload.
See Also:
WebSocketListener.onWebsocketPing(WebSocket, Framedata)
+
+
+
+ +

+onWebsocketPong

+
+public void onWebsocketPong(WebSocket conn,
+                            Framedata f)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketPong in interface WebSocketListener
+
+
+
See Also:
WebSocketListener.onWebsocketPong(WebSocket, Framedata)
+
+
+
+ +

+getFlashPolicy

+
+public java.lang.String getFlashPolicy(WebSocket conn)
+
+
Gets the XML string that should be returned if a client requests a Flash + security policy. + + The default implementation allows access from all remote domains, but + only on the port that this WebSocketServer is listening on. + + This is specifically implemented for gitime's WebSocket client for Flash: + http://github.com/gimite/web-socket-js +

+

+
Specified by:
getFlashPolicy in interface WebSocketListener
+
+
+ +
Returns:
An XML String that comforms to Flash's security policy. You MUST + not include the null char at the end, it is appended automatically.
+
+
+
+ +

+onWebsocketError

+
+public void onWebsocketError(WebSocket conn,
+                             java.lang.Exception ex)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketError in interface WebSocketListener
+
+
+
ex - The exception that occurred.
+ Might be null if the exception is not related to any specific connection. For example if the server port could not be bound.
See Also:
WebSocketListener.onWebsocketError(WebSocket, Exception)
+
+
+
+ +

+connectTiming

+
+public void connectTiming(java.util.Date startTime,
+                          java.util.Date endTime)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
connectTiming in interface WebSocketListener
+
+
+
Parameters:
startTime - Time at which the socket started connecting
endTime - Time at which the socket connection was established
See Also:
WebSocketListener.connectTiming(Date startTime, Date endTime)
+
+
+
+ +

+messageSendTiming

+
+public void messageSendTiming(java.util.Date startTime,
+                              java.util.Date endTime,
+                              WebSocketListener.MessageType type,
+                              int bytesAmount)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
messageSendTiming in interface WebSocketListener
+
+
+
Parameters:
startTime - Time at which it started sending a message
endTime - Time at which if finished sending that message
type - Type of message sent
bytesAmount - Amount of bytes sent
See Also:
WebSocketListener.messageSendTiming(Date startTime, Date endTime, MessageType type, int bytesAmount)
+
+
+
+ +

+messageReceiveTiming

+
+public void messageReceiveTiming(java.util.Date startTime,
+                                 java.util.Date endTime,
+                                 WebSocketListener.MessageType type,
+                                 int bytesAmount)
+
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
messageReceiveTiming in interface WebSocketListener
+
+
+
Parameters:
startTime - Time at which it started receiving a message
endTime - Time at which if finished receiving that message
type - Type of message sent
bytesAmount - Amount of bytes received
See Also:
WebSocketListener.messageReceiveTiming(Date startTime, Date endTime, MessageType type, int bytesAmount)
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocketClient.html b/doc/org/java_websocket/WebSocketClient.html new file mode 100644 index 000000000..6387dd5df --- /dev/null +++ b/doc/org/java_websocket/WebSocketClient.html @@ -0,0 +1,872 @@ + + + + + + +WebSocketClient + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Class WebSocketClient

+
+java.lang.Object
+  extended by org.java_websocket.WebSocketAdapter
+      extended by org.java_websocket.WebSocketClient
+
+
+
All Implemented Interfaces:
java.lang.Runnable, WebSocketListener
+
+
+
+
public abstract class WebSocketClient
extends WebSocketAdapter
implements java.lang.Runnable
+ + +

+The WebSocketClient is an abstract class that expects a valid + "ws://" URI to connect to. When connected, an instance recieves important + events related to the life of the connection. A subclass must implement + onOpen, onClose, and onMessage to be + useful. An instance can send messages to it's connected server via the + send method. +

+ +

+

+
Author:
+
Nathan Rajlich
+
+
+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from interface org.java_websocket.WebSocketListener
WebSocketListener.MessageType
+  + + + + + + + + + + + + + + +
+Constructor Summary
WebSocketClient(java.net.URI serverURI) + +
+           
WebSocketClient(java.net.URI serverUri, + Draft draft) + +
+          Constructs a WebSocketClient instance and sets it to the connect to the + specified URI.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidclose() + +
+           
+ voidconnect() + +
+          Starts a background thread that attempts and maintains a WebSocket + connection to the URI specified in the constructor or via setURI.
+ voidflush() + +
+           
+ longgetBufferedAmount() + +
+          Amount of data buffered/queued but not sent yet.
+ WebSocketgetConnection() + +
+           
+ DraftgetDraft() + +
+          Returns the protocol version this client uses.
+ intgetReadyState() + +
+          Retrieve the WebSocket 'readyState'.
+ java.net.URIgetURI() + +
+          Gets the URI that this WebSocketClient is connected to.
+protected  voidinterruptableRun() + +
+           
+abstract  voidonClose(int code, + java.lang.String reason, + boolean remote) + +
+           
+abstract  voidonError(java.lang.Exception ex) + +
+           
+ voidonMessage(byte[] bytes) + +
+           
+abstract  voidonMessage(java.lang.String message) + +
+           
+abstract  voidonOpen(ServerHandshake handshakedata) + +
+           
+ voidonWebsocketClose(WebSocket conn, + int code, + java.lang.String reason, + boolean remote) + +
+          Calls subclass' implementation of onClose.
+ voidonWebsocketError(WebSocket conn, + java.lang.Exception ex) + +
+          Calls subclass' implementation of onIOError.
+ voidonWebsocketMessage(WebSocket conn, + byte[] blob) + +
+          This default implementation does not do anything.
+ voidonWebsocketMessage(WebSocket conn, + java.lang.String message) + +
+          Calls subclass' implementation of onMessage.
+ voidonWebsocketOpen(WebSocket conn, + Handshakedata handshake) + +
+          Calls subclass' implementation of onOpen.
+ voidonWriteDemand(WebSocket conn) + +
+          This method is used to inform the selector thread that there is data queued to be written to the socket.
+ voidrun() + +
+           
+ voidsend(byte[] data) + +
+          Sends data to the connected WebSocket server.
+ voidsend(java.lang.String text) + +
+          Sends text to the connected WebSocket server.
+ + + + + + + +
Methods inherited from class org.java_websocket.WebSocketAdapter
connectTiming, getFlashPolicy, messageReceiveTiming, messageSendTiming, onWebsocketHandshakeReceivedAsClient, onWebsocketHandshakeReceivedAsServer, onWebsocketHandshakeSentAsClient, onWebsocketPing, onWebsocketPong
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebSocketClient

+
+public WebSocketClient(java.net.URI serverURI)
+
+
+
+ +

+WebSocketClient

+
+public WebSocketClient(java.net.URI serverUri,
+                       Draft draft)
+
+
Constructs a WebSocketClient instance and sets it to the connect to the + specified URI. The client does not attampt to connect automatically. You + must call connect first to initiate the socket connection. +

+

+ + + + + + + + +
+Method Detail
+ +

+getURI

+
+public java.net.URI getURI()
+
+
Gets the URI that this WebSocketClient is connected to. +

+

+
+
+
+ +
Returns:
The URI for this WebSocketClient.
+
+
+
+ +

+getDraft

+
+public Draft getDraft()
+
+
Returns the protocol version this client uses. +

+

+
+
+
+
+
+
+
+ +

+connect

+
+public void connect()
+
+
Starts a background thread that attempts and maintains a WebSocket + connection to the URI specified in the constructor or via setURI. + setURI. +

+

+
+
+
+
+
+
+
+ +

+close

+
+public void close()
+
+
+
+
+
+
+
+
+
+ +

+send

+
+public void send(java.lang.String text)
+          throws java.nio.channels.NotYetConnectedException,
+                 java.lang.InterruptedException
+
+
Sends text to the connected WebSocket server. +

+

+
+
+
+
Parameters:
text - The String to send to the WebSocket server. +
Throws: +
java.nio.channels.NotYetConnectedException +
java.lang.InterruptedException
+
+
+
+ +

+send

+
+public void send(byte[] data)
+          throws java.nio.channels.NotYetConnectedException,
+                 java.lang.InterruptedException
+
+
Sends data to the connected WebSocket server. +

+

+
+
+
+
Parameters:
data - The Byte-Array of data to send to the WebSocket server. +
Throws: +
java.nio.channels.NotYetConnectedException +
java.lang.InterruptedException
+
+
+
+ +

+run

+
+public void run()
+
+
+
Specified by:
run in interface java.lang.Runnable
+
+
+
+
+
+
+ +

+interruptableRun

+
+protected final void interruptableRun()
+
+
+
+
+
+
+
+
+
+ +

+flush

+
+public void flush()
+
+
+
+
+
+
+
+
+
+ +

+getReadyState

+
+public int getReadyState()
+
+
Retrieve the WebSocket 'readyState'. + This represents the state of the connection. + It returns a numerical value, as per W3C WebSockets specs. +

+

+
+
+
+ +
Returns:
Returns '0 = CONNECTING', '1 = OPEN', '2 = CLOSING' or '3 = CLOSED'
+
+
+
+ +

+getBufferedAmount

+
+public long getBufferedAmount()
+
+
Amount of data buffered/queued but not sent yet. + + In details, it returns the number of bytes of application data (UTF-8 text and binary data) + that have been queued using send() but that, as of the last time the event loop + started executing a task, had not yet been transmitted to the network. +

+

+
+
+
+ +
Returns:
Amount still buffered/queued but not sent yet.
+
+
+
+ +

+onWebsocketMessage

+
+public final void onWebsocketMessage(WebSocket conn,
+                                     java.lang.String message)
+
+
Calls subclass' implementation of onMessage. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
Overrides:
onWebsocketMessage in class WebSocketAdapter
+
+
+
Parameters:
conn -
message -
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, String)
+
+
+
+ +

+onWebsocketMessage

+
+public final void onWebsocketMessage(WebSocket conn,
+                                     byte[] blob)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
Overrides:
onWebsocketMessage in class WebSocketAdapter
+
+
+
Parameters:
conn - The WebSocket instance this event is occurring on.
blob - The binary message that was received.
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, byte[])
+
+
+
+ +

+onWebsocketOpen

+
+public final void onWebsocketOpen(WebSocket conn,
+                                  Handshakedata handshake)
+
+
Calls subclass' implementation of onOpen. +

+

+
Specified by:
onWebsocketOpen in interface WebSocketListener
Overrides:
onWebsocketOpen in class WebSocketAdapter
+
+
+
Parameters:
conn -
See Also:
WebSocketListener.onWebsocketOpen(WebSocket, Handshakedata)
+
+
+
+ +

+onWebsocketClose

+
+public final void onWebsocketClose(WebSocket conn,
+                                   int code,
+                                   java.lang.String reason,
+                                   boolean remote)
+
+
Calls subclass' implementation of onClose. +

+

+
Specified by:
onWebsocketClose in interface WebSocketListener
Overrides:
onWebsocketClose in class WebSocketAdapter
+
+
+
Parameters:
conn -
See Also:
WebSocketListener.onWebsocketClose(WebSocket, int, String, boolean)
+
+
+
+ +

+onWebsocketError

+
+public final void onWebsocketError(WebSocket conn,
+                                   java.lang.Exception ex)
+
+
Calls subclass' implementation of onIOError. +

+

+
Specified by:
onWebsocketError in interface WebSocketListener
Overrides:
onWebsocketError in class WebSocketAdapter
+
+
+
Parameters:
conn -
ex - The exception that occurred.
+ Might be null if the exception is not related to any specific connection. For example if the server port could not be bound.
See Also:
WebSocketListener.onWebsocketError(WebSocket, Exception)
+
+
+
+ +

+onWriteDemand

+
+public final void onWriteDemand(WebSocket conn)
+
+
Description copied from interface: WebSocketListener
+
This method is used to inform the selector thread that there is data queued to be written to the socket. +

+

+
Specified by:
onWriteDemand in interface WebSocketListener
+
+
+
+
+
+
+ +

+getConnection

+
+public WebSocket getConnection()
+
+
+
+
+
+
+
+
+
+ +

+onOpen

+
+public abstract void onOpen(ServerHandshake handshakedata)
+
+
+
+
+
+
+
+
+
+ +

+onMessage

+
+public abstract void onMessage(java.lang.String message)
+
+
+
+
+
+
+
+
+
+ +

+onClose

+
+public abstract void onClose(int code,
+                             java.lang.String reason,
+                             boolean remote)
+
+
+
+
+
+
+
+
+
+ +

+onError

+
+public abstract void onError(java.lang.Exception ex)
+
+
+
+
+
+
+
+
+
+ +

+onMessage

+
+public void onMessage(byte[] bytes)
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocketListener.MessageType.html b/doc/org/java_websocket/WebSocketListener.MessageType.html new file mode 100644 index 000000000..534c07084 --- /dev/null +++ b/doc/org/java_websocket/WebSocketListener.MessageType.html @@ -0,0 +1,355 @@ + + + + + + +WebSocketListener.MessageType + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Enum WebSocketListener.MessageType

+
+java.lang.Object
+  extended by java.lang.Enum<WebSocketListener.MessageType>
+      extended by org.java_websocket.WebSocketListener.MessageType
+
+
+
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable<WebSocketListener.MessageType>
+
+
+
Enclosing interface:
WebSocketListener
+
+
+
+
public static enum WebSocketListener.MessageType
extends java.lang.Enum<WebSocketListener.MessageType>
+ + +

+


+ +

+ + + + + + + + + + + + + + + + + + + +
+Enum Constant Summary
BINARY + +
+           
CLOSE + +
+           
HANDSHAKE + +
+           
TEXT + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+static WebSocketListener.MessageTypevalueOf(java.lang.String name) + +
+          Returns the enum constant of this type with the specified name.
+static WebSocketListener.MessageType[]values() + +
+          Returns an array containing the constants of this enum type, in +the order they are declared.
+ + + + + + + +
Methods inherited from class java.lang.Enum
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
+ + + + + + + +
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Enum Constant Detail
+ +

+HANDSHAKE

+
+public static final WebSocketListener.MessageType HANDSHAKE
+
+
+
+
+
+ +

+CLOSE

+
+public static final WebSocketListener.MessageType CLOSE
+
+
+
+
+
+ +

+TEXT

+
+public static final WebSocketListener.MessageType TEXT
+
+
+
+
+
+ +

+BINARY

+
+public static final WebSocketListener.MessageType BINARY
+
+
+
+
+ + + + + + + + +
+Method Detail
+ +

+values

+
+public static WebSocketListener.MessageType[] values()
+
+
Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
+for (WebSocketListener.MessageType c : WebSocketListener.MessageType.values())
+    System.out.println(c);
+
+

+

+ +
Returns:
an array containing the constants of this enum type, in +the order they are declared
+
+
+
+ +

+valueOf

+
+public static WebSocketListener.MessageType valueOf(java.lang.String name)
+
+
Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.) +

+

+
Parameters:
name - the name of the enum constant to be returned. +
Returns:
the enum constant with the specified name +
Throws: +
java.lang.IllegalArgumentException - if this enum type has no constant +with the specified name +
java.lang.NullPointerException - if the argument is null
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocketListener.html b/doc/org/java_websocket/WebSocketListener.html new file mode 100644 index 000000000..ecb5799f5 --- /dev/null +++ b/doc/org/java_websocket/WebSocketListener.html @@ -0,0 +1,598 @@ + + + + + + +WebSocketListener + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Interface WebSocketListener

+
+
All Known Implementing Classes:
WebSocketAdapter, WebSocketClient, WebSocketServer
+
+
+
+
public interface WebSocketListener
+ + +

+Implemented by WebSocketClient and WebSocketServer. + The methods within are called by WebSocket. + Almost every method takes a first parameter conn which represents the source of the respective event. +

+ +

+


+ +

+ + + + + + + + + + + +
+Nested Class Summary
+static classWebSocketListener.MessageType + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidconnectTiming(java.util.Date startTime, + java.util.Date endTime) + +
+          Informs the Listener how long it took to open a socket connection
+ java.lang.StringgetFlashPolicy(WebSocket conn) + +
+          Gets the XML string that should be returned if a client requests a Flash + security policy.
+ voidmessageReceiveTiming(java.util.Date startTime, + java.util.Date endTime, + WebSocketListener.MessageType type, + int bytesAmount) + +
+          Informs the Listener how long it took to receive a Message.
+ voidmessageSendTiming(java.util.Date startTime, + java.util.Date endTime, + WebSocketListener.MessageType type, + int bytesAmount) + +
+          Informs the Listener how long it took to send a Message.
+ voidonWebsocketClose(WebSocket conn, + int code, + java.lang.String reason, + boolean remote) + +
+          Called after WebSocket#close is explicity called, or when the + other end of the WebSocket connection is closed.
+ voidonWebsocketError(WebSocket conn, + java.lang.Exception ex) + +
+          Called if an exception worth noting occurred.
+ voidonWebsocketHandshakeReceivedAsClient(WebSocket conn, + ClientHandshake request, + ServerHandshake response) + +
+          Called on the client side when the socket connection is first established, and the WebSocket + handshake response has been received.
+ ServerHandshakeBuilderonWebsocketHandshakeReceivedAsServer(WebSocket conn, + Draft draft, + ClientHandshake request) + +
+          Called on the server side when the socket connection is first established, and the WebSocket + handshake has been received.
+ voidonWebsocketHandshakeSentAsClient(WebSocket conn, + ClientHandshake request) + +
+          Called on the client side when the socket connection is first established, and the WebSocket + handshake has just been sent.
+ voidonWebsocketMessage(WebSocket conn, + byte[] blob) + +
+          Called when an entire binary frame has been received.
+ voidonWebsocketMessage(WebSocket conn, + java.lang.String message) + +
+          Called when an entire text frame has been received.
+ voidonWebsocketOpen(WebSocket conn, + Handshakedata d) + +
+          Called after onHandshakeReceived returns true.
+ voidonWebsocketPing(WebSocket conn, + Framedata f) + +
+          Called a ping frame has been received.
+ voidonWebsocketPong(WebSocket conn, + Framedata f) + +
+          Called when a pong frame is received.
+ voidonWriteDemand(WebSocket conn) + +
+          This method is used to inform the selector thread that there is data queued to be written to the socket.
+  +

+ + + + + + + + +
+Method Detail
+ +

+onWebsocketHandshakeReceivedAsServer

+
+ServerHandshakeBuilder onWebsocketHandshakeReceivedAsServer(WebSocket conn,
+                                                            Draft draft,
+                                                            ClientHandshake request)
+                                                            throws InvalidDataException
+
+
Called on the server side when the socket connection is first established, and the WebSocket + handshake has been received. +

+

+
Parameters:
conn - The WebSocket related to this event
draft - The protocol draft the client uses to connect
request - The opening http message send by the client. Can be used to access additional fields like cookies. +
Returns:
Returns an incomplete handshake containing all optional fields +
Throws: +
InvalidDataException - Throwing this exception will cause this handshake to be rejected
+
+
+
+ +

+onWebsocketHandshakeReceivedAsClient

+
+void onWebsocketHandshakeReceivedAsClient(WebSocket conn,
+                                          ClientHandshake request,
+                                          ServerHandshake response)
+                                          throws InvalidDataException
+
+
Called on the client side when the socket connection is first established, and the WebSocket + handshake response has been received. +

+

+
Parameters:
conn - The WebSocket related to this event
request - The handshake initially send out to the server by this websocket.
response - The handshake the server sent in response to the request. +
Throws: +
InvalidDataException - Allows the client to reject the connection with the server in respect of its handshake response.
+
+
+
+ +

+onWebsocketHandshakeSentAsClient

+
+void onWebsocketHandshakeSentAsClient(WebSocket conn,
+                                      ClientHandshake request)
+                                      throws InvalidDataException
+
+
Called on the client side when the socket connection is first established, and the WebSocket + handshake has just been sent. +

+

+
Parameters:
conn - The WebSocket related to this event
request - The handshake sent to the server by this websocket +
Throws: +
InvalidDataException - Allows the client to stop the connection from progressing
+
+
+
+ +

+onWebsocketMessage

+
+void onWebsocketMessage(WebSocket conn,
+                        java.lang.String message)
+
+
Called when an entire text frame has been received. Do whatever you want + here... +

+

+
Parameters:
conn - The WebSocket instance this event is occurring on.
message - The UTF-8 decoded message that was received.
+
+
+
+ +

+onWebsocketMessage

+
+void onWebsocketMessage(WebSocket conn,
+                        byte[] blob)
+
+
Called when an entire binary frame has been received. Do whatever you want + here... +

+

+
Parameters:
conn - The WebSocket instance this event is occurring on.
blob - The binary message that was received.
+
+
+
+ +

+onWebsocketOpen

+
+void onWebsocketOpen(WebSocket conn,
+                     Handshakedata d)
+
+
Called after onHandshakeReceived returns true. + Indicates that a complete WebSocket connection has been established, + and we are ready to send/receive data. +

+

+
Parameters:
conn - The WebSocket instance this event is occuring on.
+
+
+
+ +

+onWebsocketClose

+
+void onWebsocketClose(WebSocket conn,
+                      int code,
+                      java.lang.String reason,
+                      boolean remote)
+
+
Called after WebSocket#close is explicity called, or when the + other end of the WebSocket connection is closed. +

+

+
Parameters:
conn - The WebSocket instance this event is occuring on.
+
+
+
+ +

+onWebsocketError

+
+void onWebsocketError(WebSocket conn,
+                      java.lang.Exception ex)
+
+
Called if an exception worth noting occurred. + If an error causes the connection to fail onClose will be called additionally afterwards. +

+

+
Parameters:
ex - The exception that occurred.
+ Might be null if the exception is not related to any specific connection. For example if the server port could not be bound.
+
+
+
+ +

+onWebsocketPing

+
+void onWebsocketPing(WebSocket conn,
+                     Framedata f)
+
+
Called a ping frame has been received. + This method must send a corresponding pong by itself. +

+

+
Parameters:
f - The ping frame. Control frames may contain payload.
+
+
+
+ +

+onWebsocketPong

+
+void onWebsocketPong(WebSocket conn,
+                     Framedata f)
+
+
Called when a pong frame is received. +

+

+
+
+
+
+ +

+getFlashPolicy

+
+java.lang.String getFlashPolicy(WebSocket conn)
+
+
Gets the XML string that should be returned if a client requests a Flash + security policy. +

+

+
+
+
+
+ +

+onWriteDemand

+
+void onWriteDemand(WebSocket conn)
+
+
This method is used to inform the selector thread that there is data queued to be written to the socket. +

+

+
+
+
+
+ +

+connectTiming

+
+void connectTiming(java.util.Date startTime,
+                   java.util.Date endTime)
+
+
Informs the Listener how long it took to open a socket connection +

+

+
Parameters:
startTime - Time at which the socket started connecting
endTime - Time at which the socket connection was established
+
+
+
+ +

+messageSendTiming

+
+void messageSendTiming(java.util.Date startTime,
+                       java.util.Date endTime,
+                       WebSocketListener.MessageType type,
+                       int bytesAmount)
+
+
Informs the Listener how long it took to send a Message. + This will also inform about how long it took to send the initial WebSocket HTTP Handshake. +

+

+
Parameters:
startTime - Time at which it started sending a message
endTime - Time at which if finished sending that message
type - Type of message sent
bytesAmount - Amount of bytes sent
+
+
+
+ +

+messageReceiveTiming

+
+void messageReceiveTiming(java.util.Date startTime,
+                          java.util.Date endTime,
+                          WebSocketListener.MessageType type,
+                          int bytesAmount)
+
+
Informs the Listener how long it took to receive a Message. + This will also inform about how long it took to receive the initial WebSocket HTTP Handshake. + Time is measured from when data are ready/waiting to be read on the socket. +

+

+
Parameters:
startTime - Time at which it started receiving a message
endTime - Time at which if finished receiving that message
type - Type of message sent
bytesAmount - Amount of bytes received
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/WebSocketServer.html b/doc/org/java_websocket/WebSocketServer.html new file mode 100644 index 000000000..8cf86b1d2 --- /dev/null +++ b/doc/org/java_websocket/WebSocketServer.html @@ -0,0 +1,842 @@ + + + + + + +WebSocketServer + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket +
+Class WebSocketServer

+
+java.lang.Object
+  extended by org.java_websocket.WebSocketAdapter
+      extended by org.java_websocket.WebSocketServer
+
+
+
All Implemented Interfaces:
java.lang.Runnable, WebSocketListener
+
+
+
+
public abstract class WebSocketServer
extends WebSocketAdapter
implements java.lang.Runnable
+ + +

+WebSocketServer is an abstract class that only takes care of the + HTTP handshake portion of WebSockets. It's up to a subclass to add + functionality/purpose to the server. +

+ +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from interface org.java_websocket.WebSocketListener
WebSocketListener.MessageType
+  + + + + + + + + + + + + + + + + + +
+Constructor Summary
WebSocketServer() + +
+          Nullary constructor.
WebSocketServer(java.net.InetSocketAddress address) + +
+          Creates a WebSocketServer that will attempt to bind/listen on the given address.
WebSocketServer(java.net.InetSocketAddress address, + Draft draft) + +
+          Creates a WebSocketServer that will attempt to bind/listen on the given address, + and comply with Draft version draft.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ java.util.Set<WebSocket>connections() + +
+          Returns a WebSocket[] of currently connected clients.
+ java.net.InetSocketAddressgetAddress() + +
+           
+ DraftgetDraft() + +
+           
+protected  java.lang.StringgetFlashSecurityPolicy() + +
+          Gets the XML string that should be returned if a client requests a Flash + security policy.
+ intgetPort() + +
+          Gets the port number that this server listens on.
+abstract  voidonClose(WebSocket conn, + int code, + java.lang.String reason, + boolean remote) + +
+           
+abstract  voidonError(WebSocket conn, + java.lang.Exception ex) + +
+           
+ voidonMessage(WebSocket conn, + byte[] message) + +
+           
+abstract  voidonMessage(WebSocket conn, + java.lang.String message) + +
+           
+abstract  voidonOpen(WebSocket conn, + ClientHandshake handshake) + +
+           
+ voidonWebsocketClose(WebSocket conn, + int code, + java.lang.String reason, + boolean remote) + +
+          This default implementation does not do anything.
+ voidonWebsocketError(WebSocket conn, + java.lang.Exception ex) + +
+          This default implementation does not do anything.
+ voidonWebsocketMessage(WebSocket conn, + byte[] blob) + +
+          This default implementation does not do anything.
+ voidonWebsocketMessage(WebSocket conn, + java.lang.String message) + +
+          This default implementation does not do anything.
+ voidonWebsocketOpen(WebSocket conn, + Handshakedata handshake) + +
+          This default implementation does not do anything.
+ voidonWriteDemand(WebSocket conn) + +
+          This method is used to inform the selector thread that there is data queued to be written to the socket.
+ voidrun() + +
+           
+ voidsetAddress(java.net.InetSocketAddress address) + +
+          Sets the address (host:port) that this WebSocketServer should listen on.
+ voidstart() + +
+          Starts the server thread that binds to the currently set port number and + listeners for WebSocket connection requests.
+ voidstop() + +
+          Closes all connected clients sockets, then closes the underlying + ServerSocketChannel, effectively killing the server socket thread and + freeing the port the server was bound to.
+ + + + + + + +
Methods inherited from class org.java_websocket.WebSocketAdapter
connectTiming, getFlashPolicy, messageReceiveTiming, messageSendTiming, onWebsocketHandshakeReceivedAsClient, onWebsocketHandshakeReceivedAsServer, onWebsocketHandshakeSentAsClient, onWebsocketPing, onWebsocketPong
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+WebSocketServer

+
+public WebSocketServer()
+                throws java.net.UnknownHostException
+
+
Nullary constructor. Creates a WebSocketServer that will attempt to + listen on port WebSocket.DEFAULT_PORT. +

+

+ +
Throws: +
java.net.UnknownHostException
+
+
+ +

+WebSocketServer

+
+public WebSocketServer(java.net.InetSocketAddress address)
+
+
Creates a WebSocketServer that will attempt to bind/listen on the given address. +

+

+
Parameters:
address - The address (host:port) this server should listen on.
+
+
+ +

+WebSocketServer

+
+public WebSocketServer(java.net.InetSocketAddress address,
+                       Draft draft)
+
+
Creates a WebSocketServer that will attempt to bind/listen on the given address, + and comply with Draft version draft. +

+

+
Parameters:
address - The address (host:port) this server should listen on.
draft - The version of the WebSocket protocol that this server + instance should comply to.
+
+ + + + + + + + +
+Method Detail
+ +

+start

+
+public void start()
+
+
Starts the server thread that binds to the currently set port number and + listeners for WebSocket connection requests. +

+

+
+
+
+ +
Throws: +
java.lang.IllegalStateException
+
+
+
+ +

+stop

+
+public void stop()
+          throws java.io.IOException
+
+
Closes all connected clients sockets, then closes the underlying + ServerSocketChannel, effectively killing the server socket thread and + freeing the port the server was bound to. +

+

+
+
+
+ +
Throws: +
java.io.IOException - When socket related I/O errors occur.
+
+
+
+ +

+connections

+
+public java.util.Set<WebSocket> connections()
+
+
Returns a WebSocket[] of currently connected clients. + Its iterators will be failfast and its not judicious + to modify it. +

+

+
+
+
+ +
Returns:
The currently connected clients.
+
+
+
+ +

+setAddress

+
+public void setAddress(java.net.InetSocketAddress address)
+
+
Sets the address (host:port) that this WebSocketServer should listen on. +

+

+
+
+
+
Parameters:
address - The address (host:port) to listen on.
+
+
+
+ +

+getAddress

+
+public java.net.InetSocketAddress getAddress()
+
+
+
+
+
+
+
+
+
+ +

+getPort

+
+public int getPort()
+
+
Gets the port number that this server listens on. +

+

+
+
+
+ +
Returns:
The port number.
+
+
+
+ +

+getDraft

+
+public Draft getDraft()
+
+
+
+
+
+
+
+
+
+ +

+run

+
+public void run()
+
+
+
Specified by:
run in interface java.lang.Runnable
+
+
+
+
+
+
+ +

+getFlashSecurityPolicy

+
+protected java.lang.String getFlashSecurityPolicy()
+
+
Gets the XML string that should be returned if a client requests a Flash + security policy. + + The default implementation allows access from all remote domains, but + only on the port that this WebSocketServer is listening on. + + This is specifically implemented for gitime's WebSocket client for Flash: + http://github.com/gimite/web-socket-js +

+

+
+
+
+ +
Returns:
An XML String that comforms to Flash's security policy. You MUST + not include the null char at the end, it is appended automatically.
+
+
+
+ +

+onWebsocketMessage

+
+public final void onWebsocketMessage(WebSocket conn,
+                                     java.lang.String message)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
Overrides:
onWebsocketMessage in class WebSocketAdapter
+
+
+
Parameters:
conn - The WebSocket instance this event is occurring on.
message - The UTF-8 decoded message that was received.
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, String)
+
+
+
+ +

+onWebsocketMessage

+
+public final void onWebsocketMessage(WebSocket conn,
+                                     byte[] blob)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketMessage in interface WebSocketListener
Overrides:
onWebsocketMessage in class WebSocketAdapter
+
+
+
Parameters:
conn - The WebSocket instance this event is occurring on.
blob - The binary message that was received.
See Also:
WebSocketListener.onWebsocketMessage(WebSocket, byte[])
+
+
+
+ +

+onWebsocketOpen

+
+public final void onWebsocketOpen(WebSocket conn,
+                                  Handshakedata handshake)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketOpen in interface WebSocketListener
Overrides:
onWebsocketOpen in class WebSocketAdapter
+
+
+
Parameters:
conn - The WebSocket instance this event is occuring on.
See Also:
WebSocketListener.onWebsocketOpen(WebSocket, Handshakedata)
+
+
+
+ +

+onWebsocketClose

+
+public final void onWebsocketClose(WebSocket conn,
+                                   int code,
+                                   java.lang.String reason,
+                                   boolean remote)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketClose in interface WebSocketListener
Overrides:
onWebsocketClose in class WebSocketAdapter
+
+
+
Parameters:
conn - The WebSocket instance this event is occuring on.
See Also:
WebSocketListener.onWebsocketClose(WebSocket, int, String, boolean)
+
+
+
+ +

+onWebsocketError

+
+public final void onWebsocketError(WebSocket conn,
+                                   java.lang.Exception ex)
+
+
Description copied from class: WebSocketAdapter
+
This default implementation does not do anything. Go ahead and overwrite it. +

+

+
Specified by:
onWebsocketError in interface WebSocketListener
Overrides:
onWebsocketError in class WebSocketAdapter
+
+
+
Parameters:
conn - may be null if the error does not belong to a single connection
ex - The exception that occurred.
+ Might be null if the exception is not related to any specific connection. For example if the server port could not be bound.
See Also:
WebSocketListener.onWebsocketError(WebSocket, Exception)
+
+
+
+ +

+onWriteDemand

+
+public final void onWriteDemand(WebSocket conn)
+
+
Description copied from interface: WebSocketListener
+
This method is used to inform the selector thread that there is data queued to be written to the socket. +

+

+
Specified by:
onWriteDemand in interface WebSocketListener
+
+
+
+
+
+
+ +

+onOpen

+
+public abstract void onOpen(WebSocket conn,
+                            ClientHandshake handshake)
+
+
+
+
+
+
+
+
+
+ +

+onClose

+
+public abstract void onClose(WebSocket conn,
+                             int code,
+                             java.lang.String reason,
+                             boolean remote)
+
+
+
+
+
+
+
+
+
+ +

+onMessage

+
+public abstract void onMessage(WebSocket conn,
+                               java.lang.String message)
+
+
+
+
+
+
+
+
+
+ +

+onError

+
+public abstract void onError(WebSocket conn,
+                             java.lang.Exception ex)
+
+
+
+
+
+
+
+
+
+ +

+onMessage

+
+public void onMessage(WebSocket conn,
+                      byte[] message)
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/net/tootallnate/websocket/WebSocket.Role.html b/doc/org/java_websocket/drafts/Draft.CloseHandshakeType.html similarity index 69% rename from doc/net/tootallnate/websocket/WebSocket.Role.html rename to doc/org/java_websocket/drafts/Draft.CloseHandshakeType.html index 18294d0b2..78e44559a 100644 --- a/doc/net/tootallnate/websocket/WebSocket.Role.html +++ b/doc/org/java_websocket/drafts/Draft.CloseHandshakeType.html @@ -2,12 +2,12 @@ - + -WebSocket.Role +Draft.CloseHandshakeType - + @@ -15,7 +15,7 @@ function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="WebSocket.Role"; + parent.document.title="Draft.CloseHandshakeType"; } } @@ -54,11 +54,11 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   - NO FRAMES   + FRAMES   + NO FRAMES     + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.drafts +
+Class Draft

+
+java.lang.Object
+  extended by org.java_websocket.drafts.Draft
+
+
+
Direct Known Subclasses:
Draft_10, Draft_75
+
+
+
+
public abstract class Draft
extends java.lang.Object
+ + +

+Base class for everything of a websocket specification which is not common such as the way the handshake is read or frames are transfered. +

+ +

+


+ +

+ + + + + + + + + + + + + + + +
+Nested Class Summary
+static classDraft.CloseHandshakeType + +
+           
+static classDraft.HandshakeState + +
+           
+ + + + + + + + + + + + + + +
+Field Summary
+static byte[]FLASH_POLICY_REQUEST + +
+           
+protected  WebSocket.Rolerole + +
+          In some cases the handshake will be parsed different depending on whether
+  + + + + + + + + + + +
+Constructor Summary
Draft() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+abstract  Draft.HandshakeStateacceptHandshakeAsClient(ClientHandshake request, + ServerHandshake response) + +
+           
+abstract  Draft.HandshakeStateacceptHandshakeAsServer(ClientHandshake handshakedata) + +
+           
+protected  booleanbasicAccept(Handshakedata handshakedata) + +
+           
+ intcheckAlloc(int bytecount) + +
+           
+abstract  java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) + +
+           
+abstract  java.util.List<Framedata>createFrames(byte[] binary, + boolean mask) + +
+           
+abstract  java.util.List<Framedata>createFrames(java.lang.String text, + boolean mask) + +
+           
+ java.util.List<java.nio.ByteBuffer>createHandshake(Handshakedata handshakedata, + WebSocket.Role ownrole) + +
+           
+ java.util.List<java.nio.ByteBuffer>createHandshake(Handshakedata handshakedata, + WebSocket.Role ownrole, + boolean withcontent) + +
+           
+abstract  Draft.CloseHandshakeTypegetCloseHandshakeType() + +
+           
+abstract  ClientHandshakeBuilderpostProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) + +
+           
+abstract  HandshakeBuilderpostProcessHandshakeResponseAsServer(ClientHandshake request, + ServerHandshakeBuilder response) + +
+           
+static java.nio.ByteBufferreadLine(java.nio.ByteBuffer buf) + +
+           
+static java.lang.StringreadStringLine(java.nio.ByteBuffer buf) + +
+           
+abstract  voidreset() + +
+           
+ voidsetParseMode(WebSocket.Role role) + +
+           
+abstract  java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) + +
+           
+ HandshakedatatranslateHandshake(java.nio.ByteBuffer buf) + +
+           
+static HandshakeBuildertranslateHandshakeHttp(java.nio.ByteBuffer buf, + WebSocket.Role role) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+FLASH_POLICY_REQUEST

+
+public static final byte[] FLASH_POLICY_REQUEST
+
+
+
+
+
+ +

+role

+
+protected WebSocket.Role role
+
+
In some cases the handshake will be parsed different depending on whether +

+

+
+
+ + + + + + + + +
+Constructor Detail
+ +

+Draft

+
+public Draft()
+
+
+ + + + + + + + +
+Method Detail
+ +

+readLine

+
+public static java.nio.ByteBuffer readLine(java.nio.ByteBuffer buf)
+
+
+
+
+
+
+ +

+readStringLine

+
+public static java.lang.String readStringLine(java.nio.ByteBuffer buf)
+
+
+
+
+
+
+ +

+translateHandshakeHttp

+
+public static HandshakeBuilder translateHandshakeHttp(java.nio.ByteBuffer buf,
+                                                      WebSocket.Role role)
+                                               throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+acceptHandshakeAsClient

+
+public abstract Draft.HandshakeState acceptHandshakeAsClient(ClientHandshake request,
+                                                             ServerHandshake response)
+                                                      throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+acceptHandshakeAsServer

+
+public abstract Draft.HandshakeState acceptHandshakeAsServer(ClientHandshake handshakedata)
+                                                      throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+basicAccept

+
+protected boolean basicAccept(Handshakedata handshakedata)
+
+
+
+
+
+
+ +

+createBinaryFrame

+
+public abstract java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
+
+
+
+
+
+
+ +

+createFrames

+
+public abstract java.util.List<Framedata> createFrames(byte[] binary,
+                                                       boolean mask)
+
+
+
+
+
+
+ +

+createFrames

+
+public abstract java.util.List<Framedata> createFrames(java.lang.String text,
+                                                       boolean mask)
+
+
+
+
+
+
+ +

+reset

+
+public abstract void reset()
+
+
+
+
+
+
+ +

+createHandshake

+
+public java.util.List<java.nio.ByteBuffer> createHandshake(Handshakedata handshakedata,
+                                                           WebSocket.Role ownrole)
+
+
+
+
+
+
+ +

+createHandshake

+
+public java.util.List<java.nio.ByteBuffer> createHandshake(Handshakedata handshakedata,
+                                                           WebSocket.Role ownrole,
+                                                           boolean withcontent)
+
+
+
+
+
+
+ +

+postProcessHandshakeRequestAsClient

+
+public abstract ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request)
+                                                                    throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+postProcessHandshakeResponseAsServer

+
+public abstract HandshakeBuilder postProcessHandshakeResponseAsServer(ClientHandshake request,
+                                                                      ServerHandshakeBuilder response)
+                                                               throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+translateFrame

+
+public abstract java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
+                                                  throws InvalidDataException
+
+
+ +
Throws: +
InvalidDataException
+
+
+
+ +

+translateHandshake

+
+public Handshakedata translateHandshake(java.nio.ByteBuffer buf)
+                                 throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+checkAlloc

+
+public int checkAlloc(int bytecount)
+               throws LimitExedeedException,
+                      InvalidDataException
+
+
+ +
Throws: +
LimitExedeedException +
InvalidDataException
+
+
+
+ +

+setParseMode

+
+public void setParseMode(WebSocket.Role role)
+
+
+
+
+
+
+ +

+getCloseHandshakeType

+
+public abstract Draft.CloseHandshakeType getCloseHandshakeType()
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/drafts/Draft_10.html b/doc/org/java_websocket/drafts/Draft_10.html new file mode 100644 index 000000000..599f1d858 --- /dev/null +++ b/doc/org/java_websocket/drafts/Draft_10.html @@ -0,0 +1,566 @@ + + + + + + +Draft_10 + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.drafts +
+Class Draft_10

+
+java.lang.Object
+  extended by org.java_websocket.drafts.Draft
+      extended by org.java_websocket.drafts.Draft_10
+
+
+
Direct Known Subclasses:
Draft_17
+
+
+
+
public class Draft_10
extends Draft
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class org.java_websocket.drafts.Draft
Draft.CloseHandshakeType, Draft.HandshakeState
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.java_websocket.drafts.Draft
FLASH_POLICY_REQUEST, role
+  + + + + + + + + + + +
+Constructor Summary
Draft_10() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Draft.HandshakeStateacceptHandshakeAsClient(ClientHandshake request, + ServerHandshake response) + +
+           
+ Draft.HandshakeStateacceptHandshakeAsServer(ClientHandshake handshakedata) + +
+           
+ java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) + +
+           
+ java.util.List<Framedata>createFrames(byte[] binary, + boolean mask) + +
+           
+ java.util.List<Framedata>createFrames(java.lang.String text, + boolean mask) + +
+           
+ Draft.CloseHandshakeTypegetCloseHandshakeType() + +
+           
+ ClientHandshakeBuilderpostProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) + +
+           
+ HandshakeBuilderpostProcessHandshakeResponseAsServer(ClientHandshake request, + ServerHandshakeBuilder response) + +
+           
+static intreadVersion(Handshakedata handshakedata) + +
+           
+ voidreset() + +
+           
+ java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) + +
+           
+ FramedatatranslateSingleFrame(java.nio.ByteBuffer buffer) + +
+           
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Draft_10

+
+public Draft_10()
+
+
+ + + + + + + + +
+Method Detail
+ +

+readVersion

+
+public static int readVersion(Handshakedata handshakedata)
+
+
+
+
+
+
+ +

+acceptHandshakeAsClient

+
+public Draft.HandshakeState acceptHandshakeAsClient(ClientHandshake request,
+                                                    ServerHandshake response)
+                                             throws InvalidHandshakeException
+
+
+
Specified by:
acceptHandshakeAsClient in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+acceptHandshakeAsServer

+
+public Draft.HandshakeState acceptHandshakeAsServer(ClientHandshake handshakedata)
+                                             throws InvalidHandshakeException
+
+
+
Specified by:
acceptHandshakeAsServer in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+createBinaryFrame

+
+public java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
+
+
+
Specified by:
createBinaryFrame in class Draft
+
+
+
+
+
+
+ +

+createFrames

+
+public java.util.List<Framedata> createFrames(byte[] binary,
+                                              boolean mask)
+
+
+
Specified by:
createFrames in class Draft
+
+
+
+
+
+
+ +

+createFrames

+
+public java.util.List<Framedata> createFrames(java.lang.String text,
+                                              boolean mask)
+
+
+
Specified by:
createFrames in class Draft
+
+
+
+
+
+
+ +

+postProcessHandshakeRequestAsClient

+
+public ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request)
+
+
+
Specified by:
postProcessHandshakeRequestAsClient in class Draft
+
+
+
+
+
+
+ +

+postProcessHandshakeResponseAsServer

+
+public HandshakeBuilder postProcessHandshakeResponseAsServer(ClientHandshake request,
+                                                             ServerHandshakeBuilder response)
+                                                      throws InvalidHandshakeException
+
+
+
Specified by:
postProcessHandshakeResponseAsServer in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+translateFrame

+
+public java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
+                                         throws LimitExedeedException,
+                                                InvalidDataException
+
+
+
Specified by:
translateFrame in class Draft
+
+
+ +
Throws: +
LimitExedeedException +
InvalidDataException
+
+
+
+ +

+translateSingleFrame

+
+public Framedata translateSingleFrame(java.nio.ByteBuffer buffer)
+                               throws org.java_websocket.drafts.Draft_10.IncompleteException,
+                                      InvalidDataException
+
+
+ +
Throws: +
org.java_websocket.drafts.Draft_10.IncompleteException +
InvalidDataException
+
+
+
+ +

+reset

+
+public void reset()
+
+
+
Specified by:
reset in class Draft
+
+
+
+
+
+
+ +

+getCloseHandshakeType

+
+public Draft.CloseHandshakeType getCloseHandshakeType()
+
+
+
Specified by:
getCloseHandshakeType in class Draft
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/drafts/Draft_17.html b/doc/org/java_websocket/drafts/Draft_17.html new file mode 100644 index 000000000..3181169fc --- /dev/null +++ b/doc/org/java_websocket/drafts/Draft_17.html @@ -0,0 +1,335 @@ + + + + + + +Draft_17 + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.drafts +
+Class Draft_17

+
+java.lang.Object
+  extended by org.java_websocket.drafts.Draft
+      extended by org.java_websocket.drafts.Draft_10
+          extended by org.java_websocket.drafts.Draft_17
+
+
+
+
public class Draft_17
extends Draft_10
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class org.java_websocket.drafts.Draft
Draft.CloseHandshakeType, Draft.HandshakeState
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.java_websocket.drafts.Draft
FLASH_POLICY_REQUEST, role
+  + + + + + + + + + + +
+Constructor Summary
Draft_17() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+ Draft.HandshakeStateacceptHandshakeAsServer(ClientHandshake handshakedata) + +
+           
+ ClientHandshakeBuilderpostProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) + +
+           
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft_10
acceptHandshakeAsClient, createBinaryFrame, createFrames, createFrames, getCloseHandshakeType, postProcessHandshakeResponseAsServer, readVersion, reset, translateFrame, translateSingleFrame
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Draft_17

+
+public Draft_17()
+
+
+ + + + + + + + +
+Method Detail
+ +

+acceptHandshakeAsServer

+
+public Draft.HandshakeState acceptHandshakeAsServer(ClientHandshake handshakedata)
+                                             throws InvalidHandshakeException
+
+
+
Overrides:
acceptHandshakeAsServer in class Draft_10
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+postProcessHandshakeRequestAsClient

+
+public ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request)
+
+
+
Overrides:
postProcessHandshakeRequestAsClient in class Draft_10
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/drafts/Draft_75.html b/doc/org/java_websocket/drafts/Draft_75.html new file mode 100644 index 000000000..58e83d4b1 --- /dev/null +++ b/doc/org/java_websocket/drafts/Draft_75.html @@ -0,0 +1,683 @@ + + + + + + +Draft_75 + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.drafts +
+Class Draft_75

+
+java.lang.Object
+  extended by org.java_websocket.drafts.Draft
+      extended by org.java_websocket.drafts.Draft_75
+
+
+
Direct Known Subclasses:
Draft_76
+
+
+
+
public class Draft_75
extends Draft
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class org.java_websocket.drafts.Draft
Draft.CloseHandshakeType, Draft.HandshakeState
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static byteCR + +
+          The byte representing CR, or Carriage Return, or \r
+protected  java.nio.ByteBuffercurrentFrame + +
+           
+static byteEND_OF_FRAME + +
+          The byte representing the end of a WebSocket text frame.
+static byteLF + +
+          The byte representing LF, or Line Feed, or \n
+protected  booleanreadingState + +
+           
+protected  java.util.List<Framedata>readyframes + +
+           
+static byteSTART_OF_FRAME + +
+          The byte representing the beginning of a WebSocket text frame.
+ + + + + + + +
Fields inherited from class org.java_websocket.drafts.Draft
FLASH_POLICY_REQUEST, role
+  + + + + + + + + + + +
+Constructor Summary
Draft_75() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Draft.HandshakeStateacceptHandshakeAsClient(ClientHandshake request, + ServerHandshake response) + +
+           
+ Draft.HandshakeStateacceptHandshakeAsServer(ClientHandshake handshakedata) + +
+           
+ java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) + +
+           
+ java.util.List<Framedata>createFrames(byte[] binary, + boolean mask) + +
+           
+ java.util.List<Framedata>createFrames(java.lang.String text, + boolean mask) + +
+           
+ Draft.CloseHandshakeTypegetCloseHandshakeType() + +
+           
+ ClientHandshakeBuilderpostProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) + +
+           
+ HandshakeBuilderpostProcessHandshakeResponseAsServer(ClientHandshake request, + ServerHandshakeBuilder response) + +
+           
+ voidreset() + +
+           
+ java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) + +
+           
+protected  java.util.List<Framedata>translateRegularFrame(java.nio.ByteBuffer buffer) + +
+           
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshake, translateHandshakeHttp
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CR

+
+public static final byte CR
+
+
The byte representing CR, or Carriage Return, or \r +

+

+
See Also:
Constant Field Values
+
+
+ +

+LF

+
+public static final byte LF
+
+
The byte representing LF, or Line Feed, or \n +

+

+
See Also:
Constant Field Values
+
+
+ +

+START_OF_FRAME

+
+public static final byte START_OF_FRAME
+
+
The byte representing the beginning of a WebSocket text frame. +

+

+
See Also:
Constant Field Values
+
+
+ +

+END_OF_FRAME

+
+public static final byte END_OF_FRAME
+
+
The byte representing the end of a WebSocket text frame. +

+

+
See Also:
Constant Field Values
+
+
+ +

+readingState

+
+protected boolean readingState
+
+
+
+
+
+ +

+readyframes

+
+protected java.util.List<Framedata> readyframes
+
+
+
+
+
+ +

+currentFrame

+
+protected java.nio.ByteBuffer currentFrame
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+Draft_75

+
+public Draft_75()
+
+
+ + + + + + + + +
+Method Detail
+ +

+acceptHandshakeAsClient

+
+public Draft.HandshakeState acceptHandshakeAsClient(ClientHandshake request,
+                                                    ServerHandshake response)
+
+
+
Specified by:
acceptHandshakeAsClient in class Draft
+
+
+
+
+
+
+ +

+acceptHandshakeAsServer

+
+public Draft.HandshakeState acceptHandshakeAsServer(ClientHandshake handshakedata)
+
+
+
Specified by:
acceptHandshakeAsServer in class Draft
+
+
+
+
+
+
+ +

+createBinaryFrame

+
+public java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
+
+
+
Specified by:
createBinaryFrame in class Draft
+
+
+
+
+
+
+ +

+createFrames

+
+public java.util.List<Framedata> createFrames(byte[] binary,
+                                              boolean mask)
+
+
+
Specified by:
createFrames in class Draft
+
+
+
+
+
+
+ +

+createFrames

+
+public java.util.List<Framedata> createFrames(java.lang.String text,
+                                              boolean mask)
+
+
+
Specified by:
createFrames in class Draft
+
+
+
+
+
+
+ +

+postProcessHandshakeRequestAsClient

+
+public ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request)
+                                                           throws InvalidHandshakeException
+
+
+
Specified by:
postProcessHandshakeRequestAsClient in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+postProcessHandshakeResponseAsServer

+
+public HandshakeBuilder postProcessHandshakeResponseAsServer(ClientHandshake request,
+                                                             ServerHandshakeBuilder response)
+                                                      throws InvalidHandshakeException
+
+
+
Specified by:
postProcessHandshakeResponseAsServer in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+translateRegularFrame

+
+protected java.util.List<Framedata> translateRegularFrame(java.nio.ByteBuffer buffer)
+                                                   throws InvalidDataException
+
+
+ +
Throws: +
InvalidDataException
+
+
+
+ +

+translateFrame

+
+public java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
+                                         throws InvalidDataException
+
+
+
Specified by:
translateFrame in class Draft
+
+
+ +
Throws: +
InvalidDataException
+
+
+
+ +

+reset

+
+public void reset()
+
+
+
Specified by:
reset in class Draft
+
+
+
+
+
+
+ +

+getCloseHandshakeType

+
+public Draft.CloseHandshakeType getCloseHandshakeType()
+
+
+
Specified by:
getCloseHandshakeType in class Draft
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/drafts/Draft_76.html b/doc/org/java_websocket/drafts/Draft_76.html new file mode 100644 index 000000000..f109f47c5 --- /dev/null +++ b/doc/org/java_websocket/drafts/Draft_76.html @@ -0,0 +1,512 @@ + + + + + + +Draft_76 + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.drafts +
+Class Draft_76

+
+java.lang.Object
+  extended by org.java_websocket.drafts.Draft
+      extended by org.java_websocket.drafts.Draft_75
+          extended by org.java_websocket.drafts.Draft_76
+
+
+
+
public class Draft_76
extends Draft_75
+ + +

+


+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class org.java_websocket.drafts.Draft
Draft.CloseHandshakeType, Draft.HandshakeState
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.java_websocket.drafts.Draft_75
CR, currentFrame, END_OF_FRAME, LF, readingState, readyframes, START_OF_FRAME
+ + + + + + + +
Fields inherited from class org.java_websocket.drafts.Draft
FLASH_POLICY_REQUEST, role
+  + + + + + + + + + + +
+Constructor Summary
Draft_76() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Draft.HandshakeStateacceptHandshakeAsClient(ClientHandshake request, + ServerHandshake response) + +
+           
+ Draft.HandshakeStateacceptHandshakeAsServer(ClientHandshake handshakedata) + +
+           
+ java.nio.ByteBuffercreateBinaryFrame(Framedata framedata) + +
+           
+static byte[]createChallenge(java.lang.String key1, + java.lang.String key2, + byte[] key3) + +
+           
+ Draft.CloseHandshakeTypegetCloseHandshakeType() + +
+           
+ ClientHandshakeBuilderpostProcessHandshakeRequestAsClient(ClientHandshakeBuilder request) + +
+           
+ HandshakeBuilderpostProcessHandshakeResponseAsServer(ClientHandshake request, + ServerHandshakeBuilder response) + +
+           
+ java.util.List<Framedata>translateFrame(java.nio.ByteBuffer buffer) + +
+           
+ HandshakedatatranslateHandshake(java.nio.ByteBuffer buf) + +
+           
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft_75
createFrames, createFrames, reset, translateRegularFrame
+ + + + + + + +
Methods inherited from class org.java_websocket.drafts.Draft
basicAccept, checkAlloc, createHandshake, createHandshake, readLine, readStringLine, setParseMode, translateHandshakeHttp
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Draft_76

+
+public Draft_76()
+
+
+ + + + + + + + +
+Method Detail
+ +

+createChallenge

+
+public static byte[] createChallenge(java.lang.String key1,
+                                     java.lang.String key2,
+                                     byte[] key3)
+                              throws InvalidHandshakeException
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+acceptHandshakeAsClient

+
+public Draft.HandshakeState acceptHandshakeAsClient(ClientHandshake request,
+                                                    ServerHandshake response)
+
+
+
Overrides:
acceptHandshakeAsClient in class Draft_75
+
+
+
+
+
+
+ +

+acceptHandshakeAsServer

+
+public Draft.HandshakeState acceptHandshakeAsServer(ClientHandshake handshakedata)
+
+
+
Overrides:
acceptHandshakeAsServer in class Draft_75
+
+
+
+
+
+
+ +

+postProcessHandshakeRequestAsClient

+
+public ClientHandshakeBuilder postProcessHandshakeRequestAsClient(ClientHandshakeBuilder request)
+
+
+
Overrides:
postProcessHandshakeRequestAsClient in class Draft_75
+
+
+
+
+
+
+ +

+postProcessHandshakeResponseAsServer

+
+public HandshakeBuilder postProcessHandshakeResponseAsServer(ClientHandshake request,
+                                                             ServerHandshakeBuilder response)
+                                                      throws InvalidHandshakeException
+
+
+
Overrides:
postProcessHandshakeResponseAsServer in class Draft_75
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+translateHandshake

+
+public Handshakedata translateHandshake(java.nio.ByteBuffer buf)
+                                 throws InvalidHandshakeException
+
+
+
Overrides:
translateHandshake in class Draft
+
+
+ +
Throws: +
InvalidHandshakeException
+
+
+
+ +

+translateFrame

+
+public java.util.List<Framedata> translateFrame(java.nio.ByteBuffer buffer)
+                                         throws InvalidDataException
+
+
+
Overrides:
translateFrame in class Draft_75
+
+
+ +
Throws: +
InvalidDataException
+
+
+
+ +

+createBinaryFrame

+
+public java.nio.ByteBuffer createBinaryFrame(Framedata framedata)
+
+
+
Overrides:
createBinaryFrame in class Draft_75
+
+
+
+
+
+
+ +

+getCloseHandshakeType

+
+public Draft.CloseHandshakeType getCloseHandshakeType()
+
+
+
Overrides:
getCloseHandshakeType in class Draft_75
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/org/java_websocket/drafts/package-frame.html b/doc/org/java_websocket/drafts/package-frame.html new file mode 100644 index 000000000..db6ae3381 --- /dev/null +++ b/doc/org/java_websocket/drafts/package-frame.html @@ -0,0 +1,53 @@ + + + + + + +org.java_websocket.drafts + + + + + + + + + + + +org.java_websocket.drafts + + + + +
+Classes  + +
+Draft +
+Draft_10 +
+Draft_17 +
+Draft_75 +
+Draft_76
+ + + + + + +
+Enums  + +
+Draft.CloseHandshakeType +
+Draft.HandshakeState
+ + + + diff --git a/doc/org/java_websocket/drafts/package-summary.html b/doc/org/java_websocket/drafts/package-summary.html new file mode 100644 index 000000000..cdc88a857 --- /dev/null +++ b/doc/org/java_websocket/drafts/package-summary.html @@ -0,0 +1,189 @@ + + + + + + +org.java_websocket.drafts + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.java_websocket.drafts +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
DraftBase class for everything of a websocket specification which is not common such as the way the handshake is read or frames are transfered.
Draft_10 
Draft_17 
Draft_75 
Draft_76 
+  + +

+ + + + + + + + + + + + + +
+Enum Summary
Draft.CloseHandshakeType 
Draft.HandshakeState 
+  + +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/net/tootallnate/websocket/package-tree.html b/doc/org/java_websocket/drafts/package-tree.html similarity index 52% rename from doc/net/tootallnate/websocket/package-tree.html rename to doc/org/java_websocket/drafts/package-tree.html index 138e36c98..bf3abd7a5 100644 --- a/doc/net/tootallnate/websocket/package-tree.html +++ b/doc/org/java_websocket/drafts/package-tree.html @@ -2,12 +2,12 @@ - + -net.tootallnate.websocket Class Hierarchy +org.java_websocket.drafts Class Hierarchy - + @@ -15,7 +15,7 @@ function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="net.tootallnate.websocket Class Hierarchy"; + parent.document.title="org.java_websocket.drafts Class Hierarchy"; } } @@ -54,10 +54,10 @@ - PREV  - NEXTPREV  + NEXT
- FRAMES   + FRAMES    NO FRAMES     @@ -87,15 +87,15 @@

-net.tootallnate.websocket.exeptions +org.java_websocket.exeptions
Class IncompleteHandshakeException

 java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by java.lang.RuntimeException
-              extended by net.tootallnate.websocket.exeptions.IncompleteHandshakeException
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by java.lang.RuntimeException
+              extended by org.java_websocket.exeptions.IncompleteHandshakeException
 
All Implemented Interfaces:
java.io.Serializable
@@ -107,7 +107,7 @@

-
See Also:
Serialized Form
+
See Also:
Serialized Form


@@ -121,26 +121,26 @@

Constructor Summary -IncompleteHandshakeException() +IncompleteHandshakeException()
            -IncompleteHandshakeException(java.lang.String message) +IncompleteHandshakeException(java.lang.String message)
            -IncompleteHandshakeException(java.lang.String message, +IncompleteHandshakeException(java.lang.String message, java.lang.Throwable cause)
            -IncompleteHandshakeException(java.lang.Throwable cause) +IncompleteHandshakeException(java.lang.Throwable cause)
            @@ -231,13 +231,13 @@

- + - - - + + +
@@ -249,19 +249,19 @@

 PREV CLASS  - NEXT CLASSNEXT CLASS - FRAMES   + FRAMES    NO FRAMES     diff --git a/doc/org/java_websocket/exeptions/InvalidDataException.html b/doc/org/java_websocket/exeptions/InvalidDataException.html new file mode 100644 index 000000000..bff605c0d --- /dev/null +++ b/doc/org/java_websocket/exeptions/InvalidDataException.html @@ -0,0 +1,319 @@ + + + + + + +InvalidDataException + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.java_websocket.exeptions +
+Class InvalidDataException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.java_websocket.exeptions.InvalidDataException
+
+
+
All Implemented Interfaces:
java.io.Serializable
+
+
+
Direct Known Subclasses:
InvalidFrameException, InvalidHandshakeException, LimitExedeedException
+
+
+
+
public class InvalidDataException
extends java.lang.Exception
+ + +

+

+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
InvalidDataException(int closecode) + +
+           
InvalidDataException(int closecode, + java.lang.String s) + +
+           
InvalidDataException(int closecode, + java.lang.String s, + java.lang.Throwable t) + +
+           
InvalidDataException(int closecode, + java.lang.Throwable t) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ intgetCloseCode() + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+InvalidDataException

+
+public InvalidDataException(int closecode)
+
+
+
+ +

+InvalidDataException

+
+public InvalidDataException(int closecode,
+                            java.lang.String s)
+
+
+
+ +

+InvalidDataException

+
+public InvalidDataException(int closecode,
+                            java.lang.Throwable t)
+
+
+
+ +

+InvalidDataException

+
+public InvalidDataException(int closecode,
+                            java.lang.String s,
+                            java.lang.Throwable t)
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCloseCode

+
+public int getCloseCode()
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + diff --git a/doc/net/tootallnate/websocket/exeptions/InvalidFrameException.html b/doc/org/java_websocket/exeptions/InvalidFrameException.html similarity index 63% rename from doc/net/tootallnate/websocket/exeptions/InvalidFrameException.html rename to doc/org/java_websocket/exeptions/InvalidFrameException.html index d2c5ff4a4..23e7a6aaa 100644 --- a/doc/net/tootallnate/websocket/exeptions/InvalidFrameException.html +++ b/doc/org/java_websocket/exeptions/InvalidFrameException.html @@ -2,14 +2,14 @@ - + InvalidFrameException - + - + @@ -75,7 +75,7 @@ - SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD
DETAIL: FIELD | CONSTR | METHOD @@ -87,27 +87,27 @@

-net.tootallnate.websocket.exeptions +org.java_websocket.exeptions
Class InvalidFrameException

 java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by net.tootallnate.websocket.exeptions.InvalidDataException
-              extended by net.tootallnate.websocket.exeptions.InvalidFrameException
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.java_websocket.exeptions.InvalidDataException
+              extended by org.java_websocket.exeptions.InvalidFrameException
 
All Implemented Interfaces:
java.io.Serializable

-
public class InvalidFrameException
extends InvalidDataException
+
public class InvalidFrameException
extends InvalidDataException

-
See Also:
Serialized Form
+
See Also:
Serialized Form

@@ -121,26 +121,26 @@

Constructor Summary -InvalidFrameException() +InvalidFrameException()
            -InvalidFrameException(java.lang.String arg0) +InvalidFrameException(java.lang.String arg0)
            -InvalidFrameException(java.lang.String arg0, +InvalidFrameException(java.lang.String arg0, java.lang.Throwable arg1)
            -InvalidFrameException(java.lang.Throwable arg0) +InvalidFrameException(java.lang.Throwable arg0)
            @@ -156,6 +156,15 @@

Method Summary + + + + + + + +
Methods inherited from class org.java_websocket.exeptions.InvalidDataException
getCloseCode
  @@ -231,13 +240,13 @@

- + - - - + + +
@@ -248,20 +257,20 @@

PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   + FRAMES    NO FRAMES     @@ -269,7 +278,7 @@

- SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD diff --git a/doc/net/tootallnate/websocket/exeptions/InvalidHandshakeException.html b/doc/org/java_websocket/exeptions/InvalidHandshakeException.html similarity index 63% rename from doc/net/tootallnate/websocket/exeptions/InvalidHandshakeException.html rename to doc/org/java_websocket/exeptions/InvalidHandshakeException.html index 2863461ad..c5f784327 100644 --- a/doc/net/tootallnate/websocket/exeptions/InvalidHandshakeException.html +++ b/doc/org/java_websocket/exeptions/InvalidHandshakeException.html @@ -2,14 +2,14 @@ - + InvalidHandshakeException - + - + @@ -75,7 +75,7 @@ - SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD @@ -87,27 +87,27 @@

-net.tootallnate.websocket.exeptions +org.java_websocket.exeptions
Class InvalidHandshakeException

 java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by net.tootallnate.websocket.exeptions.InvalidDataException
-              extended by net.tootallnate.websocket.exeptions.InvalidHandshakeException
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.java_websocket.exeptions.InvalidDataException
+              extended by org.java_websocket.exeptions.InvalidHandshakeException
 
All Implemented Interfaces:
java.io.Serializable

-
public class InvalidHandshakeException
extends InvalidDataException
+
public class InvalidHandshakeException
extends InvalidDataException

-
See Also:
Serialized Form
+
See Also:
Serialized Form

@@ -121,26 +121,26 @@

Constructor Summary -InvalidHandshakeException() +InvalidHandshakeException()
            -InvalidHandshakeException(java.lang.String arg0) +InvalidHandshakeException(java.lang.String arg0)
            -InvalidHandshakeException(java.lang.String arg0, +InvalidHandshakeException(java.lang.String arg0, java.lang.Throwable arg1)
            -InvalidHandshakeException(java.lang.Throwable arg0) +InvalidHandshakeException(java.lang.Throwable arg0)
            @@ -156,6 +156,15 @@

Method Summary + + + + + + + +
Methods inherited from class org.java_websocket.exeptions.InvalidDataException
getCloseCode
  @@ -231,13 +240,13 @@

- + - - - + + +
@@ -248,20 +257,20 @@

PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   + FRAMES    NO FRAMES     @@ -269,7 +278,7 @@

- SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD diff --git a/doc/net/tootallnate/websocket/exeptions/LimitExedeedException.html b/doc/org/java_websocket/exeptions/LimitExedeedException.html similarity index 61% rename from doc/net/tootallnate/websocket/exeptions/LimitExedeedException.html rename to doc/org/java_websocket/exeptions/LimitExedeedException.html index 8ae6b31da..e0b574832 100644 --- a/doc/net/tootallnate/websocket/exeptions/LimitExedeedException.html +++ b/doc/org/java_websocket/exeptions/LimitExedeedException.html @@ -2,14 +2,14 @@ - + LimitExedeedException - + - + @@ -75,7 +75,7 @@ - SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD @@ -87,27 +87,27 @@

-net.tootallnate.websocket.exeptions +org.java_websocket.exeptions
Class LimitExedeedException

 java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by net.tootallnate.websocket.exeptions.InvalidDataException
-              extended by net.tootallnate.websocket.exeptions.LimitExedeedException
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by org.java_websocket.exeptions.InvalidDataException
+              extended by org.java_websocket.exeptions.LimitExedeedException
 
All Implemented Interfaces:
java.io.Serializable

-
public class LimitExedeedException
extends InvalidDataException
+
public class LimitExedeedException
extends InvalidDataException

-
See Also:
Serialized Form
+
See Also:
Serialized Form

@@ -121,26 +121,13 @@

Constructor Summary -LimitExedeedException() +LimitExedeedException()
            -LimitExedeedException(java.lang.String s) - -
-            - - -LimitExedeedException(java.lang.String s, - java.lang.Throwable t) - -
-            - - -LimitExedeedException(java.lang.Throwable t) +LimitExedeedException(java.lang.String s)
            @@ -156,6 +143,15 @@

Method Summary + + + + + + + +
Methods inherited from class org.java_websocket.exeptions.InvalidDataException
getCloseCode
  @@ -201,23 +197,6 @@

public LimitExedeedException(java.lang.String s)
-
- -

-LimitExedeedException

-
-public LimitExedeedException(java.lang.Throwable t)
-
-
-
- -

-LimitExedeedException

-
-public LimitExedeedException(java.lang.String s,
-                             java.lang.Throwable t)
-
-

@@ -231,13 +210,13 @@

- + - - - + + +
@@ -248,20 +227,20 @@

PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   + FRAMES    NO FRAMES     @@ -269,7 +248,7 @@

- SUMMARY: NESTED | FIELD | CONSTR | METHOD + SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD diff --git a/doc/net/tootallnate/websocket/exeptions/InvalidDataException.html b/doc/org/java_websocket/exeptions/NotSendableException.html similarity index 58% rename from doc/net/tootallnate/websocket/exeptions/InvalidDataException.html rename to doc/org/java_websocket/exeptions/NotSendableException.html index 9e24474f4..1697943d4 100644 --- a/doc/net/tootallnate/websocket/exeptions/InvalidDataException.html +++ b/doc/org/java_websocket/exeptions/NotSendableException.html @@ -2,20 +2,20 @@ - + -InvalidDataException +NotSendableException - + - + @@ -37,13 +37,13 @@ - + - - - + + +
@@ -54,20 +54,20 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   - NO FRAMES   + FRAMES   + NO FRAMES     @@ -87,29 +87,27 @@

-net.tootallnate.websocket.exeptions +org.java_websocket.exeptions
-Class InvalidDataException

+Class NotSendableException

 java.lang.Object
-  extended by java.lang.Throwable
-      extended by java.lang.Exception
-          extended by net.tootallnate.websocket.exeptions.InvalidDataException
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by java.lang.RuntimeException
+              extended by org.java_websocket.exeptions.NotSendableException
 
All Implemented Interfaces:
java.io.Serializable
-
-
Direct Known Subclasses:
InvalidFrameException, InvalidHandshakeException, LimitExedeedException
-

-
public class InvalidDataException
extends java.lang.Exception
+
public class NotSendableException
extends java.lang.RuntimeException

-
See Also:
Serialized Form
+
See Also:
Serialized Form

@@ -123,26 +121,26 @@

Constructor Summary -InvalidDataException() +NotSendableException()
            -InvalidDataException(java.lang.String arg0) +NotSendableException(java.lang.String message)
            -InvalidDataException(java.lang.String arg0, - java.lang.Throwable arg1) +NotSendableException(java.lang.String message, + java.lang.Throwable cause)
            -InvalidDataException(java.lang.Throwable arg0) +NotSendableException(java.lang.Throwable cause)
            @@ -189,35 +187,35 @@

-

-InvalidDataException

+

+NotSendableException

-public InvalidDataException()
+public NotSendableException()

-

-InvalidDataException

+

+NotSendableException

-public InvalidDataException(java.lang.String arg0)
+public NotSendableException(java.lang.String message)

-

-InvalidDataException

+

+NotSendableException

-public InvalidDataException(java.lang.Throwable arg0)
+public NotSendableException(java.lang.Throwable cause)

-

-InvalidDataException

+

+NotSendableException

-public InvalidDataException(java.lang.String arg0,
-                            java.lang.Throwable arg1)
+public NotSendableException(java.lang.String message, + java.lang.Throwable cause)
@@ -233,13 +231,13 @@

- + - - - + + +
@@ -250,20 +248,20 @@

PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS - FRAMES   - NO FRAMES   + FRAMES   + NO FRAMES     diff --git a/doc/org/java_websocket/exeptions/package-frame.html b/doc/org/java_websocket/exeptions/package-frame.html new file mode 100644 index 000000000..4579f1ee9 --- /dev/null +++ b/doc/org/java_websocket/exeptions/package-frame.html @@ -0,0 +1,42 @@ + + + + + + +org.java_websocket.exeptions + + + + + + + + + + + +org.java_websocket.exeptions + + + + +
+Exceptions  + +
+IncompleteHandshakeException +
+InvalidDataException +
+InvalidFrameException +
+InvalidHandshakeException +
+LimitExedeedException +
+NotSendableException
+ + + + diff --git a/doc/net/tootallnate/websocket/exeptions/package-summary.html b/doc/org/java_websocket/exeptions/package-summary.html similarity index 56% rename from doc/net/tootallnate/websocket/exeptions/package-summary.html rename to doc/org/java_websocket/exeptions/package-summary.html index a45380165..515631f51 100644 --- a/doc/net/tootallnate/websocket/exeptions/package-summary.html +++ b/doc/org/java_websocket/exeptions/package-summary.html @@ -2,20 +2,20 @@ - + -net.tootallnate.websocket.exeptions +org.java_websocket.exeptions - + - + @@ -37,13 +37,13 @@ - + - - - + + +
@@ -54,20 +54,20 @@ PREV PACKAGE  - NEXT PACKAGEPREV PACKAGE  + NEXT PACKAGE
- FRAMES   + FRAMES    NO FRAMES     @@ -79,7 +79,7 @@

-Package net.tootallnate.websocket.exeptions +Package org.java_websocket.exeptions

@@ -88,23 +88,27 @@

Exception Summary

- + - + - + - + - + + + + +
IncompleteHandshakeExceptionIncompleteHandshakeException  
InvalidDataExceptionInvalidDataException  
InvalidFrameExceptionInvalidFrameException  
InvalidHandshakeExceptionInvalidHandshakeException  
LimitExedeedExceptionLimitExedeedException 
NotSendableException  
@@ -125,13 +129,13 @@

- + - - - + + +
@@ -142,20 +146,20 @@

PREV PACKAGE  - NEXT PACKAGEPREV PACKAGE  + NEXT PACKAGE - FRAMES   + FRAMES    NO FRAMES     diff --git a/doc/net/tootallnate/websocket/exeptions/package-tree.html b/doc/org/java_websocket/exeptions/package-tree.html similarity index 53% rename from doc/net/tootallnate/websocket/exeptions/package-tree.html rename to doc/org/java_websocket/exeptions/package-tree.html index 2aa85f80c..b1568dee7 100644 --- a/doc/net/tootallnate/websocket/exeptions/package-tree.html +++ b/doc/org/java_websocket/exeptions/package-tree.html @@ -2,20 +2,20 @@ - + -net.tootallnate.websocket.exeptions Class Hierarchy +org.java_websocket.exeptions Class Hierarchy - + - + @@ -37,13 +37,13 @@ - + - - - + + +
@@ -54,20 +54,20 @@ PREV  - NEXTPREV  + NEXT
- FRAMES   + FRAMES    NO FRAMES     @@ -80,11 +80,11 @@

-Hierarchy For Package net.tootallnate.websocket.exeptions +Hierarchy For Package org.java_websocket.exeptions

-
Package Hierarchies:
All Packages
+
Package Hierarchies:
All Packages

Class Hierarchy @@ -94,10 +94,10 @@

  • java.lang.Throwable (implements java.io.Serializable) @@ -114,13 +114,13 @@

    - + - - - + + +
    @@ -131,20 +131,20 @@

    PREV  - NEXTPREV  + NEXT - FRAMES   + FRAMES    NO FRAMES     diff --git a/doc/org/java_websocket/framing/CloseFrame.html b/doc/org/java_websocket/framing/CloseFrame.html new file mode 100644 index 000000000..72b8b0667 --- /dev/null +++ b/doc/org/java_websocket/framing/CloseFrame.html @@ -0,0 +1,586 @@ + + + + + + +CloseFrame + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.framing +
    +Interface CloseFrame

    +
    +
    All Superinterfaces:
    Framedata
    +
    +
    +
    All Known Implementing Classes:
    CloseFrameBuilder
    +
    +
    +
    +
    public interface CloseFrame
    extends Framedata
    + + +

    +


    + +

    + + + + + + + +
    +Nested Class Summary
    + + + + + + + +
    Nested classes/interfaces inherited from interface org.java_websocket.framing.Framedata
    Framedata.Opcode
    +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Field Summary
    +static intABNROMAL_CLOSE + +
    +          1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint.
    +static intBUGGYCLOSE + +
    +           
    +static intEXTENSION + +
    +          1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake.
    +static intFLASHPOLICY + +
    +           
    +static intGOING_AWAY + +
    +          1001 indicates that an endpoint is "going away", such as a server + going down, or a browser having navigated away from a page.
    +static intNEVERCONNECTED + +
    +          The connection had never been established
    +static intNO_UTF8 + +
    +          1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message).
    +static intNOCODE + +
    +          1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint.
    +static intNORMAL + +
    +          indicates a normal closure, meaning whatever purpose the + connection was established for has been fulfilled.
    +static intPOLICY_VALIDATION + +
    +          1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy.
    +static intPROTOCOL_ERROR + +
    +          1002 indicates that an endpoint is terminating the connection due + to a protocol error.
    +static intREFUSE + +
    +          1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g.
    +static intTOOBIG + +
    +          1009 indicates that an endpoint is terminating the connection + because it has received a message which is too big for it to + process.
    +  + + + + + + + + + + + + + + + +
    +Method Summary
    + intgetCloseCode() + +
    +           
    + java.lang.StringgetMessage() + +
    +           
    + + + + + + + +
    Methods inherited from interface org.java_websocket.framing.Framedata
    append, getOpcode, getPayloadData, getTransfereMasked, isFin
    +  +

    + + + + + + + + +
    +Field Detail
    + +

    +NORMAL

    +
    +static final int NORMAL
    +
    +
    indicates a normal closure, meaning whatever purpose the + connection was established for has been fulfilled. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +GOING_AWAY

    +
    +static final int GOING_AWAY
    +
    +
    1001 indicates that an endpoint is "going away", such as a server + going down, or a browser having navigated away from a page. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +PROTOCOL_ERROR

    +
    +static final int PROTOCOL_ERROR
    +
    +
    1002 indicates that an endpoint is terminating the connection due + to a protocol error. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +REFUSE

    +
    +static final int REFUSE
    +
    +
    1003 indicates that an endpoint is terminating the connection + because it has received a type of data it cannot accept (e.g. an + endpoint that understands only text data MAY send this if it + receives a binary message). +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +NOCODE

    +
    +static final int NOCODE
    +
    +
    1005 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that no status + code was actually present. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +ABNROMAL_CLOSE

    +
    +static final int ABNROMAL_CLOSE
    +
    +
    1006 is a reserved value and MUST NOT be set as a status code in a + Close control frame by an endpoint. It is designated for use in + applications expecting a status code to indicate that the + connection was closed abnormally, e.g. without sending or + receiving a Close control frame. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +NO_UTF8

    +
    +static final int NO_UTF8
    +
    +
    1007 indicates that an endpoint is terminating the connection + because it has received data within a message that was not + consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + data within a text message). +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +POLICY_VALIDATION

    +
    +static final int POLICY_VALIDATION
    +
    +
    1008 indicates that an endpoint is terminating the connection + because it has received a message that violates its policy. This + is a generic status code that can be returned when there is no + other more suitable status code (e.g. 1003 or 1009), or if there + is a need to hide specific details about the policy. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +TOOBIG

    +
    +static final int TOOBIG
    +
    +
    1009 indicates that an endpoint is terminating the connection + because it has received a message which is too big for it to + process. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +EXTENSION

    +
    +static final int EXTENSION
    +
    +
    1010 indicates that an endpoint (client) is terminating the + connection because it has expected the server to negotiate one or + more extension, but the server didn't return them in the response + message of the WebSocket handshake. The list of extensions which + are needed SHOULD appear in the /reason/ part of the Close frame. + Note that this status code is not used by the server, because it + can fail the WebSocket handshake instead. +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +NEVERCONNECTED

    +
    +static final int NEVERCONNECTED
    +
    +
    The connection had never been established +

    +

    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +BUGGYCLOSE

    +
    +static final int BUGGYCLOSE
    +
    +
    +
    See Also:
    Constant Field Values
    +
    +
    + +

    +FLASHPOLICY

    +
    +static final int FLASHPOLICY
    +
    +
    +
    See Also:
    Constant Field Values
    +
    + + + + + + + + +
    +Method Detail
    + +

    +getCloseCode

    +
    +int getCloseCode()
    +                 throws InvalidFrameException
    +
    +
    +
    +
    +
    + +
    Throws: +
    InvalidFrameException
    +
    +
    +
    + +

    +getMessage

    +
    +java.lang.String getMessage()
    +                            throws InvalidDataException
    +
    +
    +
    +
    +
    + +
    Throws: +
    InvalidDataException
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/framing/CloseFrameBuilder.html b/doc/org/java_websocket/framing/CloseFrameBuilder.html new file mode 100644 index 000000000..359e7e189 --- /dev/null +++ b/doc/org/java_websocket/framing/CloseFrameBuilder.html @@ -0,0 +1,452 @@ + + + + + + +CloseFrameBuilder + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.framing +
    +Class CloseFrameBuilder

    +
    +java.lang.Object
    +  extended by org.java_websocket.framing.FramedataImpl1
    +      extended by org.java_websocket.framing.CloseFrameBuilder
    +
    +
    +
    All Implemented Interfaces:
    CloseFrame, FrameBuilder, Framedata
    +
    +
    +
    +
    public class CloseFrameBuilder
    extends FramedataImpl1
    implements CloseFrame
    + + +

    +


    + +

    + + + + + + + +
    +Nested Class Summary
    + + + + + + + +
    Nested classes/interfaces inherited from interface org.java_websocket.framing.Framedata
    Framedata.Opcode
    +  + + + + + + + +
    +Field Summary
    + + + + + + + +
    Fields inherited from class org.java_websocket.framing.FramedataImpl1
    emptyarray, fin, optcode, transferemasked
    + + + + + + + +
    Fields inherited from interface org.java_websocket.framing.CloseFrame
    ABNROMAL_CLOSE, BUGGYCLOSE, EXTENSION, FLASHPOLICY, GOING_AWAY, NEVERCONNECTED, NO_UTF8, NOCODE, NORMAL, POLICY_VALIDATION, PROTOCOL_ERROR, REFUSE, TOOBIG
    +  + + + + + + + + + + + + + + + + +
    +Constructor Summary
    CloseFrameBuilder() + +
    +           
    CloseFrameBuilder(int code) + +
    +           
    CloseFrameBuilder(int code, + java.lang.String m) + +
    +           
    +  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    + intgetCloseCode() + +
    +           
    + java.lang.StringgetMessage() + +
    +           
    + byte[]getPayloadData() + +
    +           
    + voidsetPayload(byte[] payload) + +
    +           
    + java.lang.StringtoString() + +
    +           
    + + + + + + + +
    Methods inherited from class org.java_websocket.framing.FramedataImpl1
    append, getOpcode, getTransfereMasked, isFin, setFin, setOptcode, setTransferemasked
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    + + + + + + + +
    Methods inherited from interface org.java_websocket.framing.Framedata
    append, getOpcode, getTransfereMasked, isFin
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +CloseFrameBuilder

    +
    +public CloseFrameBuilder()
    +
    +
    +
    + +

    +CloseFrameBuilder

    +
    +public CloseFrameBuilder(int code)
    +                  throws InvalidDataException
    +
    +
    + +
    Throws: +
    InvalidDataException
    +
    +
    + +

    +CloseFrameBuilder

    +
    +public CloseFrameBuilder(int code,
    +                         java.lang.String m)
    +                  throws InvalidDataException
    +
    +
    + +
    Throws: +
    InvalidDataException
    +
    + + + + + + + + +
    +Method Detail
    + +

    +getCloseCode

    +
    +public int getCloseCode()
    +
    +
    +
    Specified by:
    getCloseCode in interface CloseFrame
    +
    +
    +
    +
    +
    +
    + +

    +getMessage

    +
    +public java.lang.String getMessage()
    +
    +
    +
    Specified by:
    getMessage in interface CloseFrame
    +
    +
    +
    +
    +
    +
    + +

    +toString

    +
    +public java.lang.String toString()
    +
    +
    +
    Overrides:
    toString in class FramedataImpl1
    +
    +
    +
    +
    +
    +
    + +

    +setPayload

    +
    +public void setPayload(byte[] payload)
    +                throws InvalidDataException
    +
    +
    +
    Specified by:
    setPayload in interface FrameBuilder
    Overrides:
    setPayload in class FramedataImpl1
    +
    +
    + +
    Throws: +
    InvalidDataException
    +
    +
    +
    + +

    +getPayloadData

    +
    +public byte[] getPayloadData()
    +
    +
    +
    Specified by:
    getPayloadData in interface Framedata
    Overrides:
    getPayloadData in class FramedataImpl1
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/net/tootallnate/websocket/FrameBuilder.html b/doc/org/java_websocket/framing/FrameBuilder.html similarity index 67% rename from doc/net/tootallnate/websocket/FrameBuilder.html rename to doc/org/java_websocket/framing/FrameBuilder.html index c67c670d6..742abc76a 100644 --- a/doc/net/tootallnate/websocket/FrameBuilder.html +++ b/doc/org/java_websocket/framing/FrameBuilder.html @@ -2,12 +2,12 @@ - + FrameBuilder - + @@ -54,10 +54,10 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS
    - FRAMES   + FRAMES    NO FRAMES     + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.framing +
    +Class FramedataImpl1

    +
    +java.lang.Object
    +  extended by org.java_websocket.framing.FramedataImpl1
    +
    +
    +
    All Implemented Interfaces:
    FrameBuilder, Framedata
    +
    +
    +
    Direct Known Subclasses:
    CloseFrameBuilder
    +
    +
    +
    +
    public class FramedataImpl1
    extends java.lang.Object
    implements FrameBuilder
    + + +

    +


    + +

    + + + + + + + +
    +Nested Class Summary
    + + + + + + + +
    Nested classes/interfaces inherited from interface org.java_websocket.framing.Framedata
    Framedata.Opcode
    +  + + + + + + + + + + + + + + + + + + + + + + + +
    +Field Summary
    +protected static byte[]emptyarray + +
    +           
    +protected  booleanfin + +
    +           
    +protected  Framedata.Opcodeoptcode + +
    +           
    +protected  booleantransferemasked + +
    +           
    +  + + + + + + + + + + + + + + + + +
    +Constructor Summary
    FramedataImpl1() + +
    +           
    FramedataImpl1(Framedata.Opcode op) + +
    +           
    FramedataImpl1(Framedata f) + +
    +           
    +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    + voidappend(Framedata nextframe) + +
    +           
    + Framedata.OpcodegetOpcode() + +
    +           
    + byte[]getPayloadData() + +
    +           
    + booleangetTransfereMasked() + +
    +           
    + booleanisFin() + +
    +           
    + voidsetFin(boolean fin) + +
    +           
    + voidsetOptcode(Framedata.Opcode optcode) + +
    +           
    + voidsetPayload(byte[] payload) + +
    +           
    + voidsetTransferemasked(boolean transferemasked) + +
    +           
    + java.lang.StringtoString() + +
    +           
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +  +

    + + + + + + + + +
    +Field Detail
    + +

    +emptyarray

    +
    +protected static byte[] emptyarray
    +
    +
    +
    +
    +
    + +

    +fin

    +
    +protected boolean fin
    +
    +
    +
    +
    +
    + +

    +optcode

    +
    +protected Framedata.Opcode optcode
    +
    +
    +
    +
    +
    + +

    +transferemasked

    +
    +protected boolean transferemasked
    +
    +
    +
    +
    + + + + + + + + +
    +Constructor Detail
    + +

    +FramedataImpl1

    +
    +public FramedataImpl1()
    +
    +
    +
    + +

    +FramedataImpl1

    +
    +public FramedataImpl1(Framedata.Opcode op)
    +
    +
    +
    + +

    +FramedataImpl1

    +
    +public FramedataImpl1(Framedata f)
    +
    +
    + + + + + + + + +
    +Method Detail
    + +

    +isFin

    +
    +public boolean isFin()
    +
    +
    +
    Specified by:
    isFin in interface Framedata
    +
    +
    +
    +
    +
    +
    + +

    +getOpcode

    +
    +public Framedata.Opcode getOpcode()
    +
    +
    +
    Specified by:
    getOpcode in interface Framedata
    +
    +
    +
    +
    +
    +
    + +

    +getTransfereMasked

    +
    +public boolean getTransfereMasked()
    +
    +
    +
    Specified by:
    getTransfereMasked in interface Framedata
    +
    +
    +
    +
    +
    +
    + +

    +getPayloadData

    +
    +public byte[] getPayloadData()
    +
    +
    +
    Specified by:
    getPayloadData in interface Framedata
    +
    +
    +
    +
    +
    +
    + +

    +setFin

    +
    +public void setFin(boolean fin)
    +
    +
    +
    Specified by:
    setFin in interface FrameBuilder
    +
    +
    +
    +
    +
    +
    + +

    +setOptcode

    +
    +public void setOptcode(Framedata.Opcode optcode)
    +
    +
    +
    Specified by:
    setOptcode in interface FrameBuilder
    +
    +
    +
    +
    +
    +
    + +

    +setPayload

    +
    +public void setPayload(byte[] payload)
    +                throws InvalidDataException
    +
    +
    +
    Specified by:
    setPayload in interface FrameBuilder
    +
    +
    + +
    Throws: +
    InvalidDataException
    +
    +
    +
    + +

    +setTransferemasked

    +
    +public void setTransferemasked(boolean transferemasked)
    +
    +
    +
    Specified by:
    setTransferemasked in interface FrameBuilder
    +
    +
    +
    +
    +
    +
    + +

    +append

    +
    +public void append(Framedata nextframe)
    +            throws InvalidFrameException
    +
    +
    +
    Specified by:
    append in interface Framedata
    +
    +
    + +
    Throws: +
    InvalidFrameException
    +
    +
    +
    + +

    +toString

    +
    +public java.lang.String toString()
    +
    +
    +
    Overrides:
    toString in class java.lang.Object
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/framing/package-frame.html b/doc/org/java_websocket/framing/package-frame.html new file mode 100644 index 000000000..bb58127f3 --- /dev/null +++ b/doc/org/java_websocket/framing/package-frame.html @@ -0,0 +1,60 @@ + + + + + + +org.java_websocket.framing + + + + + + + + + + + +org.java_websocket.framing + + + + +
    +Interfaces  + +
    +CloseFrame +
    +FrameBuilder +
    +Framedata
    + + + + + + +
    +Classes  + +
    +CloseFrameBuilder +
    +FramedataImpl1
    + + + + + + +
    +Enums  + +
    +Framedata.Opcode
    + + + + diff --git a/doc/net/tootallnate/websocket/package-summary.html b/doc/org/java_websocket/framing/package-summary.html similarity index 52% rename from doc/net/tootallnate/websocket/package-summary.html rename to doc/org/java_websocket/framing/package-summary.html index 7b38f064e..6cc26fba6 100644 --- a/doc/net/tootallnate/websocket/package-summary.html +++ b/doc/org/java_websocket/framing/package-summary.html @@ -2,12 +2,12 @@ - + -net.tootallnate.websocket +org.java_websocket.framing - + @@ -15,7 +15,7 @@ function windowTitle() { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="net.tootallnate.websocket"; + parent.document.title="org.java_websocket.framing"; } } @@ -54,10 +54,10 @@ - PREV PACKAGE  - NEXT PACKAGEPREV PACKAGE  + NEXT PACKAGE
    - FRAMES   + FRAMES    NO FRAMES     + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Hierarchy For Package org.java_websocket.framing +

    +
    +
    +
    Package Hierarchies:
    All Packages
    +
    +

    +Class Hierarchy +

    + +

    +Interface Hierarchy +

    + +

    +Enum Hierarchy +

    +
      +
    • java.lang.Object
        +
      • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
      +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/ClientHandshake.html b/doc/org/java_websocket/handshake/ClientHandshake.html new file mode 100644 index 000000000..dc4a99b46 --- /dev/null +++ b/doc/org/java_websocket/handshake/ClientHandshake.html @@ -0,0 +1,225 @@ + + + + + + +ClientHandshake + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Interface ClientHandshake

    +
    +
    All Superinterfaces:
    Handshakedata
    +
    +
    +
    All Known Subinterfaces:
    ClientHandshakeBuilder
    +
    +
    +
    All Known Implementing Classes:
    HandshakeImpl1Client
    +
    +
    +
    +
    public interface ClientHandshake
    extends Handshakedata
    + + +

    +


    + +

    + + + + + + + + + + + + +
    +Method Summary
    + java.lang.StringgetResourceDescriptor() + +
    +           
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Method Detail
    + +

    +getResourceDescriptor

    +
    +java.lang.String getResourceDescriptor()
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/ClientHandshakeBuilder.html b/doc/org/java_websocket/handshake/ClientHandshakeBuilder.html new file mode 100644 index 000000000..bff60d482 --- /dev/null +++ b/doc/org/java_websocket/handshake/ClientHandshakeBuilder.html @@ -0,0 +1,240 @@ + + + + + + +ClientHandshakeBuilder + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Interface ClientHandshakeBuilder

    +
    +
    All Superinterfaces:
    ClientHandshake, HandshakeBuilder, Handshakedata
    +
    +
    +
    All Known Implementing Classes:
    HandshakeImpl1Client
    +
    +
    +
    +
    public interface ClientHandshakeBuilder
    extends HandshakeBuilder, ClientHandshake
    + + +

    +


    + +

    + + + + + + + + + + + + +
    +Method Summary
    + voidsetResourceDescriptor(java.lang.String resourcedescriptor) + +
    +           
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.HandshakeBuilder
    put, setContent
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.ClientHandshake
    getResourceDescriptor
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Method Detail
    + +

    +setResourceDescriptor

    +
    +void setResourceDescriptor(java.lang.String resourcedescriptor)
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/net/tootallnate/websocket/HandshakeBuilder.html b/doc/org/java_websocket/handshake/HandshakeBuilder.html similarity index 65% rename from doc/net/tootallnate/websocket/HandshakeBuilder.html rename to doc/org/java_websocket/handshake/HandshakeBuilder.html index 8dd31f7f6..09f0e0f41 100644 --- a/doc/net/tootallnate/websocket/HandshakeBuilder.html +++ b/doc/org/java_websocket/handshake/HandshakeBuilder.html @@ -2,12 +2,12 @@ - + HandshakeBuilder - + @@ -54,10 +54,10 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS
    - FRAMES   + FRAMES    NO FRAMES     + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Class HandshakeImpl1Client

    +
    +java.lang.Object
    +  extended by org.java_websocket.handshake.HandshakedataImpl1
    +      extended by org.java_websocket.handshake.HandshakeImpl1Client
    +
    +
    +
    All Implemented Interfaces:
    ClientHandshake, ClientHandshakeBuilder, HandshakeBuilder, Handshakedata
    +
    +
    +
    +
    public class HandshakeImpl1Client
    extends HandshakedataImpl1
    implements ClientHandshakeBuilder
    + + +

    +


    + +

    + + + + + + + + + + + +
    +Constructor Summary
    HandshakeImpl1Client() + +
    +           
    +  + + + + + + + + + + + + + + + +
    +Method Summary
    + java.lang.StringgetResourceDescriptor() + +
    +           
    + voidsetResourceDescriptor(java.lang.String resourcedescriptor) + +
    +           
    + + + + + + + +
    Methods inherited from class org.java_websocket.handshake.HandshakedataImpl1
    getContent, getFieldValue, hasFieldValue, iterateHttpFields, put, setContent
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.HandshakeBuilder
    put, setContent
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +HandshakeImpl1Client

    +
    +public HandshakeImpl1Client()
    +
    +
    + + + + + + + + +
    +Method Detail
    + +

    +setResourceDescriptor

    +
    +public void setResourceDescriptor(java.lang.String resourcedescriptor)
    +                           throws java.lang.IllegalArgumentException
    +
    +
    +
    Specified by:
    setResourceDescriptor in interface ClientHandshakeBuilder
    +
    +
    + +
    Throws: +
    java.lang.IllegalArgumentException
    +
    +
    +
    + +

    +getResourceDescriptor

    +
    +public java.lang.String getResourceDescriptor()
    +
    +
    +
    Specified by:
    getResourceDescriptor in interface ClientHandshake
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/HandshakeImpl1Server.html b/doc/org/java_websocket/handshake/HandshakeImpl1Server.html new file mode 100644 index 000000000..61bcb68c0 --- /dev/null +++ b/doc/org/java_websocket/handshake/HandshakeImpl1Server.html @@ -0,0 +1,350 @@ + + + + + + +HandshakeImpl1Server + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Class HandshakeImpl1Server

    +
    +java.lang.Object
    +  extended by org.java_websocket.handshake.HandshakedataImpl1
    +      extended by org.java_websocket.handshake.HandshakeImpl1Server
    +
    +
    +
    All Implemented Interfaces:
    HandshakeBuilder, Handshakedata, ServerHandshake, ServerHandshakeBuilder
    +
    +
    +
    +
    public class HandshakeImpl1Server
    extends HandshakedataImpl1
    implements ServerHandshakeBuilder
    + + +

    +


    + +

    + + + + + + + + + + + +
    +Constructor Summary
    HandshakeImpl1Server() + +
    +           
    +  + + + + + + + + + + + + + + + + + + + + + + + +
    +Method Summary
    + shortgetHttpStatus() + +
    +           
    + java.lang.StringgetHttpStatusMessage() + +
    +           
    + voidsetHttpStatus(short status) + +
    +           
    + voidsetHttpStatusMessage(java.lang.String message) + +
    +           
    + + + + + + + +
    Methods inherited from class org.java_websocket.handshake.HandshakedataImpl1
    getContent, getFieldValue, hasFieldValue, iterateHttpFields, put, setContent
    + + + + + + + +
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.HandshakeBuilder
    put, setContent
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Constructor Detail
    + +

    +HandshakeImpl1Server

    +
    +public HandshakeImpl1Server()
    +
    +
    + + + + + + + + +
    +Method Detail
    + +

    +getHttpStatusMessage

    +
    +public java.lang.String getHttpStatusMessage()
    +
    +
    +
    Specified by:
    getHttpStatusMessage in interface ServerHandshake
    +
    +
    +
    +
    +
    +
    + +

    +getHttpStatus

    +
    +public short getHttpStatus()
    +
    +
    +
    Specified by:
    getHttpStatus in interface ServerHandshake
    +
    +
    +
    +
    +
    +
    + +

    +setHttpStatusMessage

    +
    +public void setHttpStatusMessage(java.lang.String message)
    +
    +
    +
    Specified by:
    setHttpStatusMessage in interface ServerHandshakeBuilder
    +
    +
    +
    +
    +
    +
    + +

    +setHttpStatus

    +
    +public void setHttpStatus(short status)
    +
    +
    +
    Specified by:
    setHttpStatus in interface ServerHandshakeBuilder
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/net/tootallnate/websocket/Handshakedata.html b/doc/org/java_websocket/handshake/Handshakedata.html similarity index 72% rename from doc/net/tootallnate/websocket/Handshakedata.html rename to doc/org/java_websocket/handshake/Handshakedata.html index ee8a70c94..21e2ef544 100644 --- a/doc/net/tootallnate/websocket/Handshakedata.html +++ b/doc/org/java_websocket/handshake/Handshakedata.html @@ -2,12 +2,12 @@ - + Handshakedata - + @@ -54,10 +54,10 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS
    - FRAMES   + FRAMES    NO FRAMES     + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Interface ServerHandshake

    +
    +
    All Superinterfaces:
    Handshakedata
    +
    +
    +
    All Known Subinterfaces:
    ServerHandshakeBuilder
    +
    +
    +
    All Known Implementing Classes:
    HandshakeImpl1Server
    +
    +
    +
    +
    public interface ServerHandshake
    extends Handshakedata
    + + +

    +


    + +

    + + + + + + + + + + + + + + + + +
    +Method Summary
    + shortgetHttpStatus() + +
    +           
    + java.lang.StringgetHttpStatusMessage() + +
    +           
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Method Detail
    + +

    +getHttpStatus

    +
    +short getHttpStatus()
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +

    +getHttpStatusMessage

    +
    +java.lang.String getHttpStatusMessage()
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/ServerHandshakeBuilder.html b/doc/org/java_websocket/handshake/ServerHandshakeBuilder.html new file mode 100644 index 000000000..93d5462aa --- /dev/null +++ b/doc/org/java_websocket/handshake/ServerHandshakeBuilder.html @@ -0,0 +1,262 @@ + + + + + + +ServerHandshakeBuilder + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + +

    + +org.java_websocket.handshake +
    +Interface ServerHandshakeBuilder

    +
    +
    All Superinterfaces:
    HandshakeBuilder, Handshakedata, ServerHandshake
    +
    +
    +
    All Known Implementing Classes:
    HandshakeImpl1Server
    +
    +
    +
    +
    public interface ServerHandshakeBuilder
    extends HandshakeBuilder, ServerHandshake
    + + +

    +


    + +

    + + + + + + + + + + + + + + + + +
    +Method Summary
    + voidsetHttpStatus(short status) + +
    +           
    + voidsetHttpStatusMessage(java.lang.String message) + +
    +           
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.HandshakeBuilder
    put, setContent
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.ServerHandshake
    getHttpStatus, getHttpStatusMessage
    + + + + + + + +
    Methods inherited from interface org.java_websocket.handshake.Handshakedata
    getContent, getFieldValue, hasFieldValue, iterateHttpFields
    +  +

    + + + + + + + + +
    +Method Detail
    + +

    +setHttpStatus

    +
    +void setHttpStatus(short status)
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +

    +setHttpStatusMessage

    +
    +void setHttpStatusMessage(java.lang.String message)
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/package-frame.html b/doc/org/java_websocket/handshake/package-frame.html new file mode 100644 index 000000000..f0d1864a7 --- /dev/null +++ b/doc/org/java_websocket/handshake/package-frame.html @@ -0,0 +1,57 @@ + + + + + + +org.java_websocket.handshake + + + + + + + + + + + +org.java_websocket.handshake + + + + +
    +Interfaces  + +
    +ClientHandshake +
    +ClientHandshakeBuilder +
    +HandshakeBuilder +
    +Handshakedata +
    +ServerHandshake +
    +ServerHandshakeBuilder
    + + + + + + +
    +Classes  + +
    +HandshakedataImpl1 +
    +HandshakeImpl1Client +
    +HandshakeImpl1Server
    + + + + diff --git a/doc/org/java_websocket/handshake/package-summary.html b/doc/org/java_websocket/handshake/package-summary.html new file mode 100644 index 000000000..e3c83992d --- /dev/null +++ b/doc/org/java_websocket/handshake/package-summary.html @@ -0,0 +1,197 @@ + + + + + + +org.java_websocket.handshake + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +

    +Package org.java_websocket.handshake +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Interface Summary
    ClientHandshake 
    ClientHandshakeBuilder 
    HandshakeBuilder 
    Handshakedata 
    ServerHandshake 
    ServerHandshakeBuilder 
    +  + +

    + + + + + + + + + + + + + + + + + +
    +Class Summary
    HandshakedataImpl1 
    HandshakeImpl1Client 
    HandshakeImpl1Server 
    +  + +

    +

    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/handshake/package-tree.html b/doc/org/java_websocket/handshake/package-tree.html new file mode 100644 index 000000000..73cddad0b --- /dev/null +++ b/doc/org/java_websocket/handshake/package-tree.html @@ -0,0 +1,173 @@ + + + + + + +org.java_websocket.handshake Class Hierarchy + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Hierarchy For Package org.java_websocket.handshake +

    +
    +
    +
    Package Hierarchies:
    All Packages
    +
    +

    +Class Hierarchy +

    + +

    +Interface Hierarchy +

    + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/package-frame.html b/doc/org/java_websocket/package-frame.html new file mode 100644 index 000000000..143727b1a --- /dev/null +++ b/doc/org/java_websocket/package-frame.html @@ -0,0 +1,62 @@ + + + + + + +org.java_websocket + + + + + + + + + + + +org.java_websocket + + + + +
    +Interfaces  + +
    +WebSocketListener
    + + + + + + +
    +Classes  + +
    +WebSocket +
    +WebSocketAdapter +
    +WebSocketClient +
    +WebSocketServer
    + + + + + + +
    +Enums  + +
    +WebSocket.Role +
    +WebSocketListener.MessageType
    + + + + diff --git a/doc/org/java_websocket/package-summary.html b/doc/org/java_websocket/package-summary.html new file mode 100644 index 000000000..24dc0425c --- /dev/null +++ b/doc/org/java_websocket/package-summary.html @@ -0,0 +1,201 @@ + + + + + + +org.java_websocket + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +

    +Package org.java_websocket +

    + + + + + + + + + +
    +Interface Summary
    WebSocketListenerImplemented by WebSocketClient and WebSocketServer.
    +  + +

    + + + + + + + + + + + + + + + + + + + + + +
    +Class Summary
    WebSocketRepresents one end (client or server) of a single WebSocket connection.
    WebSocketAdapter 
    WebSocketClientThe WebSocketClient is an abstract class that expects a valid + "ws://" URI to connect to.
    WebSocketServerWebSocketServer is an abstract class that only takes care of the + HTTP handshake portion of WebSockets.
    +  + +

    + + + + + + + + + + + + + +
    +Enum Summary
    WebSocket.Role 
    WebSocketListener.MessageType 
    +  + +

    +

    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/org/java_websocket/package-tree.html b/doc/org/java_websocket/package-tree.html new file mode 100644 index 000000000..b761a7c15 --- /dev/null +++ b/doc/org/java_websocket/package-tree.html @@ -0,0 +1,171 @@ + + + + + + +org.java_websocket Class Hierarchy + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    +

    +Hierarchy For Package org.java_websocket +

    +
    +
    +
    Package Hierarchies:
    All Packages
    +
    +

    +Class Hierarchy +

    + +

    +Interface Hierarchy +

    + +

    +Enum Hierarchy +

    + +
    + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + diff --git a/doc/net/tootallnate/websocket/Base64.InputStream.html b/doc/org/java_websocket/util/Base64.InputStream.html similarity index 78% rename from doc/net/tootallnate/websocket/Base64.InputStream.html rename to doc/org/java_websocket/util/Base64.InputStream.html index bbbae659b..3ee125976 100644 --- a/doc/net/tootallnate/websocket/Base64.InputStream.html +++ b/doc/org/java_websocket/util/Base64.InputStream.html @@ -2,12 +2,12 @@ - + Base64.InputStream - + @@ -54,10 +54,10 @@ PREV CLASS  - NEXT CLASSPREV CLASS  + NEXT CLASS
    - FRAMES   + FRAMES    NO FRAMES     @@ -37,13 +37,13 @@ - + - - - + + +
    @@ -54,20 +54,20 @@ PREV PACKAGE  - NEXT PACKAGEPREV PACKAGE  + NEXT PACKAGE
    - FRAMES   + FRAMES    NO FRAMES     @@ -79,7 +79,7 @@

    -Package net.tootallnate.websocket.drafts +Package org.java_websocket.util

    @@ -88,19 +88,23 @@

    Class Summary

    - - + + - - + + - - + + - +
    Draft_10 Base64Encodes and decodes to and from Base64 notation.
    Draft_17 Base64.InputStreamA Base64.InputStream will read data from another + java.io.InputStream, given in the constructor, + and encode/decode to/from Base64 notation on the fly.
    Draft_75 Base64.OutputStreamA Base64.OutputStream will write data to another + java.io.OutputStream, given in the constructor, + and encode/decode to/from Base64 notation on the fly.
    Draft_76Charsetfunctions  
    @@ -121,13 +125,13 @@

    - + - - - + + +
    @@ -138,20 +142,20 @@

    PREV PACKAGE  - NEXT PACKAGEPREV PACKAGE  + NEXT PACKAGE - FRAMES   + FRAMES    NO FRAMES     diff --git a/doc/net/tootallnate/websocket/drafts/package-tree.html b/doc/org/java_websocket/util/package-tree.html similarity index 54% rename from doc/net/tootallnate/websocket/drafts/package-tree.html rename to doc/org/java_websocket/util/package-tree.html index 07aca3ebb..1c88dac65 100644 --- a/doc/net/tootallnate/websocket/drafts/package-tree.html +++ b/doc/org/java_websocket/util/package-tree.html @@ -2,20 +2,20 @@ - + -net.tootallnate.websocket.drafts Class Hierarchy +org.java_websocket.util Class Hierarchy - + - + @@ -37,13 +37,13 @@ - + - - - + + +
    @@ -54,20 +54,20 @@ PREV  - NEXTPREV  + NEXT
    - FRAMES   + FRAMES    NO FRAMES     @@ -80,22 +80,26 @@

    -Hierarchy For Package net.tootallnate.websocket.drafts +Hierarchy For Package org.java_websocket.util

    -
    Package Hierarchies:
    All Packages
    +
    Package Hierarchies:
    All Packages

    Class Hierarchy

    -
  • net.tootallnate.websocket.WebSocket
  • net.tootallnate.websocket.WebSocketAdapter @@ -127,11 +135,23 @@

    Interface Hierarchy

    Enum Hierarchy

    @@ -139,7 +159,7 @@

  • java.lang.Object
    diff --git a/doc/package-list b/doc/package-list index 3ca4d5e90..c3b7bb5b3 100644 --- a/doc/package-list +++ b/doc/package-list @@ -1,3 +1,6 @@ -net.tootallnate.websocket -net.tootallnate.websocket.drafts -net.tootallnate.websocket.exeptions +org.java_websocket +org.java_websocket.drafts +org.java_websocket.exeptions +org.java_websocket.framing +org.java_websocket.handshake +org.java_websocket.util diff --git a/doc/serialized-form.html b/doc/serialized-form.html index 0a4831cfa..96073865f 100644 --- a/doc/serialized-form.html +++ b/doc/serialized-form.html @@ -2,12 +2,12 @@ - + Serialized Form - + @@ -87,60 +87,87 @@

    +Packageorg.java_websocket.exeptions
    -Package net.tootallnate.websocket.exeptions

    - + +Class org.java_websocket.exeptions.IncompleteHandshakeException extends java.lang.RuntimeException implements Serializable
    -Class net.tootallnate.websocket.exeptions.IncompleteHandshakeException extends java.lang.RuntimeException implements Serializable

    - + +Class org.java_websocket.exeptions.InvalidDataException extends java.lang.Exception implements Serializable + +
    -Class net.tootallnate.websocket.exeptions.InvalidDataException extends java.lang.Exception implements Serializable
    + +

    + + + + + +
    +Serialized Fields
    + +

    +closecode

    +
    +int closecode
    +
    +
    +
    +
    + +

    + + + +
    +Class org.java_websocket.exeptions.InvalidFrameException extends InvalidDataException implements Serializable

    - + +Class org.java_websocket.exeptions.InvalidHandshakeException extends InvalidDataException implements Serializable
    -Class net.tootallnate.websocket.exeptions.InvalidFrameException extends InvalidDataException implements Serializable

    - + +Class org.java_websocket.exeptions.LimitExedeedException extends InvalidDataException implements Serializable
    -Class net.tootallnate.websocket.exeptions.InvalidHandshakeException extends InvalidDataException implements Serializable

    - + +Class org.java_websocket.exeptions.NotSendableException extends java.lang.RuntimeException implements Serializable
    -Class net.tootallnate.websocket.exeptions.LimitExedeedException extends InvalidDataException implements Serializable
    From 13ffdf7cb6c7cdd8ae08096883e1cc851c845758 Mon Sep 17 00:00:00 2001 From: Ivan De Marino Date: Tue, 29 May 2012 16:06:25 +0200 Subject: [PATCH 4/4] Avoid "NullPointerException" in case an InvalidDataException is thrown. --- src/org/java_websocket/WebSocket.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/org/java_websocket/WebSocket.java b/src/org/java_websocket/WebSocket.java index 3c028baaa..1b69b51fa 100644 --- a/src/org/java_websocket/WebSocket.java +++ b/src/org/java_websocket/WebSocket.java @@ -418,15 +418,17 @@ public void closeDirect( int code, String message ) throws IOException { if( draft.getCloseHandshakeType() != CloseHandshakeType.NONE ) { Framedata frameData = null; + int frameDataPayloadSize = 0; try { frameData = new CloseFrameBuilder( code, message ); + frameDataPayloadSize = frameData.getPayloadData().remaining(); sendFrameDirect(frameData); } catch ( InvalidDataException e ) { wsl.onWebsocketError( this, e ); closeConnection( CloseFrame.ABNROMAL_CLOSE, "generated frame is invalid", false ); } // timing callback - wsl.messageSendTiming( closeMessageSendStartTime, new Date(), MessageType.CLOSE, frameData.getPayloadData().length ); + wsl.messageSendTiming( closeMessageSendStartTime, new Date(), MessageType.CLOSE, frameDataPayloadSize ); } else { closeConnection( code, false ); }