<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Session</title>
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Session";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6,"i26":6,"i27":6,"i28":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/websocket/SendResult.html" title="class in javax.websocket"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/websocket/SessionException.html" title="class in javax.websocket"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/websocket/Session.html" target="_top">Frames</a></li>
<li><a href="Session.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.websocket</div>
<h2 title="Interface Session" class="title">Interface Session</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>java.lang.AutoCloseable, java.io.Closeable</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Session</span>
extends java.io.Closeable</pre>
<div class="block">A Web Socket session represents a conversation between two web socket endpoints. As soon as the websocket handshake
 completes successfully, the web socket implementation provides the endpoint an open websocket session. The endpoint
 can then register interest in incoming messages that are part of this newly created session by providing a
 MessageHandler to the session, and can send messages to the other end of the conversation by means of the
 RemoteEndpoint object obtained from this session.
 <p>
 Once the session is closed, it is no longer valid for use by applications. Calling any of its methods (with the
 exception of the close() methods) once the session has been closed will result in an
 <code>IllegalStateException</code> being thrown. Developers should retrieve any information from the session
 during the <a href="../../javax/websocket/Endpoint.html#onClose-javax.websocket.Session-javax.websocket.CloseReason-"><code>Endpoint.onClose(javax.websocket.Session, javax.websocket.CloseReason)</code></a> method. Following the convention of <code>Closeable</code> calling the Session
 close() methods after the Session has been closed has no effect.
 <p>
 Session objects may be called by multiple threads. Implementations must ensure the integrity of the mutable
 properties of the session under such circumstances.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Partial-">addMessageHandler</a></span>(java.lang.Class&lt;T&gt;&nbsp;clazz,
                 <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket">MessageHandler.Partial</a>&lt;T&gt;&nbsp;handler)</code>
<div class="block">Register to handle to incoming messages in this conversation.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Whole-">addMessageHandler</a></span>(java.lang.Class&lt;T&gt;&nbsp;clazz,
                 <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket">MessageHandler.Whole</a>&lt;T&gt;&nbsp;handler)</code>
<div class="block">Register to handle to incoming messages in this conversation.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#addMessageHandler-javax.websocket.MessageHandler-">addMessageHandler</a></span>(<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&nbsp;handler)</code>
<div class="block">Register to handle to incoming messages in this conversation.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#close--">close</a></span>()</code>
<div class="block">Close the current conversation with a normal status code and no reason phrase.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#close-javax.websocket.CloseReason-">close</a></span>(<a href="../../javax/websocket/CloseReason.html" title="class in javax.websocket">CloseReason</a>&nbsp;closeReason)</code>
<div class="block">Close the current conversation, giving a reason for the closure.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../javax/websocket/RemoteEndpoint.Async.html" title="interface in javax.websocket">RemoteEndpoint.Async</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getAsyncRemote--">getAsyncRemote</a></span>()</code>
<div class="block">Return a reference a RemoteEndpoint object representing the peer of this conversation that is able to send
 messages asynchronously to the peer.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../javax/websocket/RemoteEndpoint.Basic.html" title="interface in javax.websocket">RemoteEndpoint.Basic</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getBasicRemote--">getBasicRemote</a></span>()</code>
<div class="block">Return a reference a RemoteEndpoint object representing the peer of this conversation that is able to send
 messages synchronously to the peer.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../javax/websocket/WebSocketContainer.html" title="interface in javax.websocket">WebSocketContainer</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getContainer--">getContainer</a></span>()</code>
<div class="block">Return the container that this session is part of.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getId--">getId</a></span>()</code>
<div class="block">Returns a string containing the unique identifier assigned to this session.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getMaxBinaryMessageBufferSize--">getMaxBinaryMessageBufferSize</a></span>()</code>
<div class="block">The maximum length of incoming binary messages that this Session can buffer.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getMaxIdleTimeout--">getMaxIdleTimeout</a></span>()</code>
<div class="block">Return the number of milliseconds before this conversation may be closed by the container if it is inactive, i.e.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getMaxTextMessageBufferSize--">getMaxTextMessageBufferSize</a></span>()</code>
<div class="block">The maximum length of incoming text messages that this Session can buffer.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getMessageHandlers--">getMessageHandlers</a></span>()</code>
<div class="block">Return an unmodifiable copy of the set of MessageHandlers for this Session.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../javax/websocket/Extension.html" title="interface in javax.websocket">Extension</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getNegotiatedExtensions--">getNegotiatedExtensions</a></span>()</code>
<div class="block">Return the list of extensions currently in use for this conversation.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getNegotiatedSubprotocol--">getNegotiatedSubprotocol</a></span>()</code>
<div class="block">Return the sub protocol agreed during the websocket handshake for this conversation.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.util.Set&lt;<a href="../../javax/websocket/Session.html" title="interface in javax.websocket">Session</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getOpenSessions--">getOpenSessions</a></span>()</code>
<div class="block">Return a copy of the Set of all the open web socket sessions that represent connections to the same endpoint to
 which this session represents a connection.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getPathParameters--">getPathParameters</a></span>()</code>
<div class="block">Return a map of the path parameter names and values used associated with the request this session was opened
 under.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getProtocolVersion--">getProtocolVersion</a></span>()</code>
<div class="block">Returns the version of the websocket protocol currently being used.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getQueryString--">getQueryString</a></span>()</code>
<div class="block">Return the query string associated with the request this session was opened under.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getRequestParameterMap--">getRequestParameterMap</a></span>()</code>
<div class="block">Return the request parameters associated with the request this session was opened under.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>java.net.URI</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getRequestURI--">getRequestURI</a></span>()</code>
<div class="block">Return the URI under which this session was opened, including the query string if there is one.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>java.security.Principal</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getUserPrincipal--">getUserPrincipal</a></span>()</code>
<div class="block">Return the authenticated user for this Session or <code>null</code> if no user is authenticated for this session.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,java.lang.Object&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#getUserProperties--">getUserProperties</a></span>()</code>
<div class="block">While the session is open, this method returns a Map that the developer may use to store application specific
 information relating to this session instance.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#isOpen--">isOpen</a></span>()</code>
<div class="block">Return true if and only if the underlying socket is open.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#isSecure--">isSecure</a></span>()</code>
<div class="block">Return true if and only if the underlying socket is using a secure transport.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#removeMessageHandler-javax.websocket.MessageHandler-">removeMessageHandler</a></span>(<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&nbsp;handler)</code>
<div class="block">Remove the given MessageHandler from the set belonging to this session.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#setMaxBinaryMessageBufferSize-int-">setMaxBinaryMessageBufferSize</a></span>(int&nbsp;length)</code>
<div class="block">Sets the maximum length of incoming binary messages that this Session can buffer.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#setMaxIdleTimeout-long-">setMaxIdleTimeout</a></span>(long&nbsp;milliseconds)</code>
<div class="block">Set the non-zero number of milliseconds before this session will be closed by the container if it is inactive, ie
 no messages are either sent or received.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/websocket/Session.html#setMaxTextMessageBufferSize-int-">setMaxTextMessageBufferSize</a></span>(int&nbsp;length)</code>
<div class="block">Sets the maximum length of incoming text messages that this Session can buffer.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getContainer--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContainer</h4>
<pre><a href="../../javax/websocket/WebSocketContainer.html" title="interface in javax.websocket">WebSocketContainer</a>&nbsp;getContainer()</pre>
<div class="block">Return the container that this session is part of.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the container.</dd>
</dl>
</li>
</ul>
<a name="addMessageHandler-javax.websocket.MessageHandler-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMessageHandler</h4>
<pre>void&nbsp;addMessageHandler(<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&nbsp;handler)
                throws java.lang.IllegalStateException</pre>
<div class="block">Register to handle to incoming messages in this conversation. A maximum of one message handler per native
 websocket message type (text, binary, pong) may be added to each Session. I.e. a maximum of one message handler
 to handle incoming text messages a maximum of one message handler for handling incoming binary messages, and a
 maximum of one for handling incoming pong messages. For further details of which message handlers handle which of
 the native websocket message types please see <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket"><code>MessageHandler.Whole</code></a> and <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket"><code>MessageHandler.Partial</code></a>.
 Adding more than one of any one type will result in a runtime exception.
 <p>
 This method is not safe to use unless you are providing an anonymous class derived directly from
 <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket"><code>MessageHandler.Whole</code></a> or <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket"><code>MessageHandler.Partial</code></a>. In all other
 cases (Lambda Expressions, more complex inheritance or generic type arrangements), one of the following methods
 have to be used: <a href="../../javax/websocket/Session.html#addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Whole-"><code>addMessageHandler(Class, javax.websocket.MessageHandler.Whole)</code></a> or
 <a href="../../javax/websocket/Session.html#addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Partial-"><code>addMessageHandler(Class, javax.websocket.MessageHandler.Partial)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>handler</code> - the MessageHandler to be added.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if there is already a MessageHandler registered for the same native websocket
                               message type as this handler.</dd>
</dl>
</li>
</ul>
<a name="addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Whole-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMessageHandler</h4>
<pre>&lt;T&gt;&nbsp;void&nbsp;addMessageHandler(java.lang.Class&lt;T&gt;&nbsp;clazz,
                           <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket">MessageHandler.Whole</a>&lt;T&gt;&nbsp;handler)</pre>
<div class="block">Register to handle to incoming messages in this conversation. A maximum of one message handler per native
 websocket message type (text, binary, pong) may be added to each Session. I.e. a maximum of one message handler
 to handle incoming text messages a maximum of one message handler for handling incoming binary messages, and a
 maximum of one for handling incoming pong messages. For further details of which message handlers handle which of
 the native websocket message types please see <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket"><code>MessageHandler.Whole</code></a> and <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket"><code>MessageHandler.Partial</code></a>.
 Adding more than one of any one type will result in a runtime exception.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - type of message that the given handler is intended for.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clazz</code> - type of the message processed by message handler to be registered.</dd>
<dd><code>handler</code> - whole message handler to be added.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if there is already a MessageHandler registered for the same native websocket
                               message type as this handler.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>WebSocket 1.1</dd>
</dl>
</li>
</ul>
<a name="addMessageHandler-java.lang.Class-javax.websocket.MessageHandler.Partial-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMessageHandler</h4>
<pre>&lt;T&gt;&nbsp;void&nbsp;addMessageHandler(java.lang.Class&lt;T&gt;&nbsp;clazz,
                           <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket">MessageHandler.Partial</a>&lt;T&gt;&nbsp;handler)</pre>
<div class="block">Register to handle to incoming messages in this conversation. A maximum of one message handler per native
 websocket message type (text, binary, pong) may be added to each Session. I.e. a maximum of one message handler
 to handle incoming text messages a maximum of one message handler for handling incoming binary messages, and a
 maximum of one for handling incoming pong messages. For further details of which message handlers handle which of
 the native websocket message types please see <a href="../../javax/websocket/MessageHandler.Whole.html" title="interface in javax.websocket"><code>MessageHandler.Whole</code></a> and <a href="../../javax/websocket/MessageHandler.Partial.html" title="interface in javax.websocket"><code>MessageHandler.Partial</code></a>.
 Adding more than one of any one type will result in a runtime exception.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - type of message that the given handler is intended for.</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>clazz</code> - type of the message processed by message handler to be registered.</dd>
<dd><code>handler</code> - partial message handler to be added.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code> - if there is already a MessageHandler registered for the same native websocket
                               message type as this handler.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>WebSocket 1.1</dd>
</dl>
</li>
</ul>
<a name="getMessageHandlers--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMessageHandlers</h4>
<pre>java.util.Set&lt;<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&gt;&nbsp;getMessageHandlers()</pre>
<div class="block">Return an unmodifiable copy of the set of MessageHandlers for this Session.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the set of message handlers.</dd>
</dl>
</li>
</ul>
<a name="removeMessageHandler-javax.websocket.MessageHandler-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeMessageHandler</h4>
<pre>void&nbsp;removeMessageHandler(<a href="../../javax/websocket/MessageHandler.html" title="interface in javax.websocket">MessageHandler</a>&nbsp;handler)</pre>
<div class="block">Remove the given MessageHandler from the set belonging to this session. This method may block if the given
 handler is processing a message until it is no longer in use.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>handler</code> - the handler to be removed.</dd>
</dl>
</li>
</ul>
<a name="getProtocolVersion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProtocolVersion</h4>
<pre>java.lang.String&nbsp;getProtocolVersion()</pre>
<div class="block">Returns the version of the websocket protocol currently being used. This is taken as the value of the
 Sec-WebSocket-Version header used in the opening handshake. i.e. "13".</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the protocol version.</dd>
</dl>
</li>
</ul>
<a name="getNegotiatedSubprotocol--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNegotiatedSubprotocol</h4>
<pre>java.lang.String&nbsp;getNegotiatedSubprotocol()</pre>
<div class="block">Return the sub protocol agreed during the websocket handshake for this conversation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the negotiated subprotocol, or the empty string if there isn't one.</dd>
</dl>
</li>
</ul>
<a name="getNegotiatedExtensions--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNegotiatedExtensions</h4>
<pre>java.util.List&lt;<a href="../../javax/websocket/Extension.html" title="interface in javax.websocket">Extension</a>&gt;&nbsp;getNegotiatedExtensions()</pre>
<div class="block">Return the list of extensions currently in use for this conversation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the negotiated extensions.</dd>
</dl>
</li>
</ul>
<a name="isSecure--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSecure</h4>
<pre>boolean&nbsp;isSecure()</pre>
<div class="block">Return true if and only if the underlying socket is using a secure transport.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether its using a secure transport.</dd>
</dl>
</li>
</ul>
<a name="isOpen--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOpen</h4>
<pre>boolean&nbsp;isOpen()</pre>
<div class="block">Return true if and only if the underlying socket is open.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the session is active.</dd>
</dl>
</li>
</ul>
<a name="getMaxIdleTimeout--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaxIdleTimeout</h4>
<pre>long&nbsp;getMaxIdleTimeout()</pre>
<div class="block">Return the number of milliseconds before this conversation may be closed by the container if it is inactive, i.e.
 no messages are either sent or received in that time.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the timeout in milliseconds.</dd>
</dl>
</li>
</ul>
<a name="setMaxIdleTimeout-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaxIdleTimeout</h4>
<pre>void&nbsp;setMaxIdleTimeout(long&nbsp;milliseconds)</pre>
<div class="block">Set the non-zero number of milliseconds before this session will be closed by the container if it is inactive, ie
 no messages are either sent or received. A value that is 0 or negative indicates the session will never timeout
 due to inactivity.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>milliseconds</code> - the number of milliseconds.</dd>
</dl>
</li>
</ul>
<a name="setMaxBinaryMessageBufferSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaxBinaryMessageBufferSize</h4>
<pre>void&nbsp;setMaxBinaryMessageBufferSize(int&nbsp;length)</pre>
<div class="block">Sets the maximum length of incoming binary messages that this Session can buffer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>length</code> - the maximum length.</dd>
</dl>
</li>
</ul>
<a name="getMaxBinaryMessageBufferSize--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaxBinaryMessageBufferSize</h4>
<pre>int&nbsp;getMaxBinaryMessageBufferSize()</pre>
<div class="block">The maximum length of incoming binary messages that this Session can buffer. If the implementation receives a
 binary message that it cannot buffer because it is too large, it must close the session with a close code of
 <a href="../../javax/websocket/CloseReason.CloseCodes.html#TOO_BIG"><code>CloseReason.CloseCodes.TOO_BIG</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the maximum binary message size that can be buffered.</dd>
</dl>
</li>
</ul>
<a name="setMaxTextMessageBufferSize-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaxTextMessageBufferSize</h4>
<pre>void&nbsp;setMaxTextMessageBufferSize(int&nbsp;length)</pre>
<div class="block">Sets the maximum length of incoming text messages that this Session can buffer.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>length</code> - the maximum length.</dd>
</dl>
</li>
</ul>
<a name="getMaxTextMessageBufferSize--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaxTextMessageBufferSize</h4>
<pre>int&nbsp;getMaxTextMessageBufferSize()</pre>
<div class="block">The maximum length of incoming text messages that this Session can buffer. If the implementation receives a text
 message that it cannot buffer because it is too large, it must close the session with a close code of
 <a href="../../javax/websocket/CloseReason.CloseCodes.html#TOO_BIG"><code>CloseReason.CloseCodes.TOO_BIG</code></a>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the maximum text message size that can be buffered.</dd>
</dl>
</li>
</ul>
<a name="getAsyncRemote--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAsyncRemote</h4>
<pre><a href="../../javax/websocket/RemoteEndpoint.Async.html" title="interface in javax.websocket">RemoteEndpoint.Async</a>&nbsp;getAsyncRemote()</pre>
<div class="block">Return a reference a RemoteEndpoint object representing the peer of this conversation that is able to send
 messages asynchronously to the peer.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the remote endpoint.</dd>
</dl>
</li>
</ul>
<a name="getBasicRemote--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBasicRemote</h4>
<pre><a href="../../javax/websocket/RemoteEndpoint.Basic.html" title="interface in javax.websocket">RemoteEndpoint.Basic</a>&nbsp;getBasicRemote()</pre>
<div class="block">Return a reference a RemoteEndpoint object representing the peer of this conversation that is able to send
 messages synchronously to the peer.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the remote endpoint.</dd>
</dl>
</li>
</ul>
<a name="getId--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getId</h4>
<pre>java.lang.String&nbsp;getId()</pre>
<div class="block">Returns a string containing the unique identifier assigned to this session. The identifier is assigned by the web
 socket implementation and is implementation dependent.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the unique identifier for this session instance.</dd>
</dl>
</li>
</ul>
<a name="close--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>void&nbsp;close()
    throws java.io.IOException</pre>
<div class="block">Close the current conversation with a normal status code and no reason phrase.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if there was a connection error closing the connection.</dd>
</dl>
</li>
</ul>
<a name="close-javax.websocket.CloseReason-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>void&nbsp;close(<a href="../../javax/websocket/CloseReason.html" title="class in javax.websocket">CloseReason</a>&nbsp;closeReason)
    throws java.io.IOException</pre>
<div class="block">Close the current conversation, giving a reason for the closure. The close call causes the implementation to
 attempt notify the client of the close as soon as it can. This may cause the sending of unsent messages
 immediately prior to the close notification. After the close notification has been sent the implementation
 notifies the endpoint's onClose method. Note the websocket specification defines the acceptable uses of status
 codes and reason phrases. If the application cannot determine a suitable close code to use for the closeReason,
 it is recommended to use <a href="../../javax/websocket/CloseReason.CloseCodes.html#NO_STATUS_CODE"><code>CloseReason.CloseCodes.NO_STATUS_CODE</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>closeReason</code> - the reason for the closure.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if there was a connection error closing the connection</dd>
</dl>
</li>
</ul>
<a name="getRequestURI--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequestURI</h4>
<pre>java.net.URI&nbsp;getRequestURI()</pre>
<div class="block">Return the URI under which this session was opened, including the query string if there is one.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the request URI.</dd>
</dl>
</li>
</ul>
<a name="getRequestParameterMap--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRequestParameterMap</h4>
<pre>java.util.Map&lt;java.lang.String,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;getRequestParameterMap()</pre>
<div class="block">Return the request parameters associated with the request this session was opened under.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the unmodifiable map of the request parameters.</dd>
</dl>
</li>
</ul>
<a name="getQueryString--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getQueryString</h4>
<pre>java.lang.String&nbsp;getQueryString()</pre>
<div class="block">Return the query string associated with the request this session was opened under.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the query string</dd>
</dl>
</li>
</ul>
<a name="getPathParameters--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPathParameters</h4>
<pre>java.util.Map&lt;java.lang.String,java.lang.String&gt;&nbsp;getPathParameters()</pre>
<div class="block">Return a map of the path parameter names and values used associated with the request this session was opened
 under.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the unmodifiable map of path parameters. The key of the map is the parameter name, the values in the map
         are the parameter values.</dd>
</dl>
</li>
</ul>
<a name="getUserProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserProperties</h4>
<pre>java.util.Map&lt;java.lang.String,java.lang.Object&gt;&nbsp;getUserProperties()</pre>
<div class="block">While the session is open, this method returns a Map that the developer may use to store application specific
 information relating to this session instance. The developer may retrieve information from this Map at any time
 between the opening of the session and during the onClose() method. But outside that time, any information stored
 using this Map may no longer be kept by the container. Web socket applications running on distributed
 implementations of the web container should make any application specific objects stored here
 java.io.Serializable, or the object may not be recreated after a failover.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an editable Map of application data.</dd>
</dl>
</li>
</ul>
<a name="getUserPrincipal--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUserPrincipal</h4>
<pre>java.security.Principal&nbsp;getUserPrincipal()</pre>
<div class="block">Return the authenticated user for this Session or <code>null</code> if no user is authenticated for this session.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the user principal.</dd>
</dl>
</li>
</ul>
<a name="getOpenSessions--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getOpenSessions</h4>
<pre>java.util.Set&lt;<a href="../../javax/websocket/Session.html" title="interface in javax.websocket">Session</a>&gt;&nbsp;getOpenSessions()</pre>
<div class="block">Return a copy of the Set of all the open web socket sessions that represent connections to the same endpoint to
 which this session represents a connection. The Set includes the session this method is called on. These sessions
 may not still be open at any point after the return of this method. For example, iterating over the set at a
 later time may yield one or more closed sessions. Developers should use session.isOpen() to check.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the set of sessions, open at the time of return.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../javax/websocket/SendResult.html" title="class in javax.websocket"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../javax/websocket/SessionException.html" title="class in javax.websocket"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?javax/websocket/Session.html" target="_top">Frames</a></li>
<li><a href="Session.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
