Package com.iizix.jetty
Class WebSocketClientEndPoint
java.lang.Object
com.iizix.jetty.WebSocketClientEndPoint
- All Implemented Interfaces:
IWebSocketComm
,Session.Listener
,Session.Listener.AutoDemanding
@WebSocket(autoDemand=true) public class WebSocketClientEndPoint extends Object implements IWebSocketComm, Session.Listener.AutoDemanding
Client Endpoint for Jetty 12 WebSocket, with auto-demand for additional messages.
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.jetty.websocket.api.Session.Listener
Session.Listener.Abstract, Session.Listener.AbstractAutoDemanding, Session.Listener.AutoDemanding
Method Summary
Modifier and TypeMethodDescriptionboolean
Checks if Binary Data Frames are supported.void
close()
Call this method to close the socket.boolean
close
(boolean rightNow) Call this method to close the socket.void
Call this method to close the socket.void
dispose()
Disposes of the session: will soft-close it nicely.Gets the WebSocket attachment object, null for none.Gets the request domain.int
getPort()
Gets the port number for the connection to the server.Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.Returns the fully qualified name of the client or the last proxy that sent the request.Returns the remote address to which this channel's socket is connected.getState()
Gets the state of the connection.Gets the negotiated and accepted sub-protocol, null for none (yet), or none is provided by the parties (server or client).boolean
isClosed()
Checks if the connection is disposed of.boolean
Checks if the connection is currently closing.boolean
Flag for supporting software compression on client side.boolean
Checks if the connection is established.boolean
Checks if the connection is connecting.boolean
isSecure()
Return if the connection is secured using SSL/TLS.void
onWebSocketBinary
(ByteBuffer buf, Callback callback) Binary message received.void
onWebSocketClose
(int code, String reason) Called when session is being closed.void
Called when session encounters an error.void
onWebSocketFrame
(Frame frame) A WebSocket PING has been received.void
onWebSocketOpen
(Session session) Called when session is opened.void
A WebSocket PONG frame has been received.void
onWebSocketText
(String message) String message received.void
open()
Opens the communication.void
send
(byte[] data) Sends binary data.void
Sends a String of data.boolean
Sends a heart-beat.void
setAttachment
(Object attachment) Gets the WebSocket attachment object, null for none.void
setSubProtocol
(String subProtocol) Assigns a sub-protocol for the WebSocket (in case the processing of sub-protocol negotiation is done e.g.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.websocket.api.Session.Listener
onWebSocketFrame, onWebSocketPartialBinary, onWebSocketPartialText, onWebSocketPing
Method Details
isCompressionSupported
public boolean isCompressionSupported()Flag for supporting software compression on client side.- Specified by:
isCompressionSupported
in interfaceIWebSocketComm
- Returns:
- Always true.
dispose
public void dispose()Disposes of the session: will soft-close it nicely.open
Opens the communication.- Specified by:
open
in interfaceIWebSocketComm
- Throws:
IOException
getState
Gets the state of the connection.- Specified by:
getState
in interfaceIWebSocketComm
- Returns:
- The state.
isConnecting
public boolean isConnecting()Checks if the connection is connecting.- Specified by:
isConnecting
in interfaceIWebSocketComm
- Returns:
- true if the connection is pending.
isConnected
public boolean isConnected()Checks if the connection is established.- Specified by:
isConnected
in interfaceIWebSocketComm
- Returns:
- true if the connection is established.
isClosing
public boolean isClosing()Checks if the connection is currently closing.- Specified by:
isClosing
in interfaceIWebSocketComm
- Returns:
- true if not closed, but closing.
isClosed
public boolean isClosed()Checks if the connection is disposed of.- Specified by:
isClosed
in interfaceIWebSocketComm
- Returns:
- true if closed, not closing.
close
public void close()Call this method to close the socket.- Specified by:
close
in interfaceIWebSocketComm
close
Call this method to close the socket.- Specified by:
close
in interfaceIWebSocketComm
- Parameters:
code
- A close code: zero for none, otherwise a code 1000 or range 4000 to 4999.reason
- The reason code, can be null.
close
public boolean close(boolean rightNow) Call this method to close the socket.- Specified by:
close
in interfaceIWebSocketComm
- Parameters:
rightNow
- If true, the socket is hard-closed, i.e. no close conversation takes place with the server. If false, the client will send a close message to server that replies with a close itself, then the socket is closed.- Returns:
- true if closed, false if already closed.
setSubProtocol
Assigns a sub-protocol for the WebSocket (in case the processing of sub-protocol negotiation is done e.g. outside the WebSocket communication acceptor).- Specified by:
setSubProtocol
in interfaceIWebSocketComm
- Throws:
IllegalStateException
- If the state doesn't permit this operation, or if the implementation doesn't allow it.
getSubProtocol
Gets the negotiated and accepted sub-protocol, null for none (yet), or none is provided by the parties (server or client).- Specified by:
getSubProtocol
in interfaceIWebSocketComm
- Returns:
- The String for the sub-protocol negotiated, null for none.
areBinaryDataFramesSupported
public boolean areBinaryDataFramesSupported()Checks if Binary Data Frames are supported.- Specified by:
areBinaryDataFramesSupported
in interfaceIWebSocketComm
- Returns:
- true if it is supported, false otherwise.
send
Sends binary data.- Specified by:
send
in interfaceIWebSocketComm
- Parameters:
data
- The byte array containing the data.- Throws:
IOException
- for failures, e.g. socket is closed, not open, not connected.
send
Sends a String of data.- Specified by:
send
in interfaceIWebSocketComm
- Parameters:
data
- The String to send.- Throws:
IOException
- for failures, e.g. socket is closed, not open, not connected.
sendHeartBeat
Sends a heart-beat.- Specified by:
sendHeartBeat
in interfaceIWebSocketComm
- Returns:
- true for success, false for failure (e.g. closing state or closed).
- Throws:
IOException
- For send failures.
getDomain
Gets the request domain.- Specified by:
getDomain
in interfaceIWebSocketComm
- Returns:
- The domain name of the server.
getPort
public int getPort()Gets the port number for the connection to the server.- Specified by:
getPort
in interfaceIWebSocketComm
- Returns:
- The port number.
isSecure
public boolean isSecure()Return if the connection is secured using SSL/TLS.- Specified by:
isSecure
in interfaceIWebSocketComm
- Returns:
- The secure flag. Please note that if the server is behind a proxy, the connection might be secure anyway.
getRemoteAddr
Returns the Internet Protocol (IP) address of the client or last proxy that sent the request. For HTTP servlets, same as the value of the CGI variable REMOTE_ADDR. The IP address format depends if it is an IPv4 or IPv6 address.- Specified by:
getRemoteAddr
in interfaceIWebSocketComm
- Returns:
- a String containing the IP address of the client that sent the request.
getRemoteHost
Returns the fully qualified name of the client or the last proxy that sent the request. If the engine cannot or chooses not to resolve the hostname (to improve performance), this method returns the dotted-string form of the IP address (if IPv4, colon'ed-string for IPv6). For HTTP servlets, same as the value of the CGI variable REMOTE_HOST.- Specified by:
getRemoteHost
in interfaceIWebSocketComm
- Returns:
- a String containing the fully qualified name of the client.
getSocketAddress
Returns the remote address to which this channel's socket is connected.Where the channel is bound and connected to an Internet Protocol socket address then the return value from this method is of type
SocketAddress
.- Specified by:
getSocketAddress
in interfaceIWebSocketComm
- Returns:
- The remote address;
null
if the channel's socket is not connected.
getAttachment
Gets the WebSocket attachment object, null for none.- Specified by:
getAttachment
in interfaceIWebSocketComm
- Returns:
- An object set by
setAttachment
.
setAttachment
Gets the WebSocket attachment object, null for none.- Specified by:
setAttachment
in interfaceIWebSocketComm
- Parameters:
attachment
- The attachment object for the web socket.
onWebSocketOpen
Called when session is opened.- Specified by:
onWebSocketOpen
in interfaceSession.Listener
- Parameters:
session
- The WebSocket session.
onWebSocketError
Called when session encounters an error.- Specified by:
onWebSocketError
in interfaceSession.Listener
onWebSocketClose
Called when session is being closed.- Specified by:
onWebSocketClose
in interfaceSession.Listener
- Parameters:
code
- The close code.reason
- The reason, ornull
for none.
onWebSocketPong
A WebSocket PONG frame has been received.- Specified by:
onWebSocketPong
in interfaceSession.Listener
- Parameters:
buf
- the PONG payload.
onWebSocketFrame
A WebSocket PING has been received. Reply with a PONG with the same content.- Parameters:
buf
- the PING payload.
onWebSocketText
String message received.- Specified by:
onWebSocketText
in interfaceSession.Listener
- Parameters:
message
- The string message.
onWebSocketBinary
Binary message received.- Specified by:
onWebSocketBinary
in interfaceSession.Listener
- Parameters:
buf
- The byte buffer with the data.callback
- Callback when completed.