<spanid="evennia-server-portal-webclient-ajax"></span><h1>evennia.server.portal.webclient_ajax<aclass="headerlink"href="#module-evennia.server.portal.webclient_ajax"title="Permalink to this headline">¶</a></h1>
<p>AJAX/COMET fallback webclient</p>
<p>The AJAX/COMET web client consists of two components running on
twisted and django. They are both a part of the Evennia website url
tree (so the testing website might be located on
<aclass="reference external"href="http://localhost:4001/">http://localhost:4001/</a>, whereas the webclient can be found on
<codeclass="sig-name descname">default</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#LazyEncoder.default"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.LazyEncoder.default"title="Permalink to this definition">¶</a></dt>
<dd><p>Implement this method in a subclass such that it returns
a serializable object for <strong>**o**</strong>, or calls the base implementation
(to raise a <strong>**TypeError**</strong>).</p>
<p>For example, to support arbitrary iterators, you could
<codeclass="sig-prename descclassname">evennia.server.portal.webclient_ajax.</code><codeclass="sig-name descname">jsonify</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#jsonify"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.jsonify"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.webclient_ajax.</code><codeclass="sig-name descname">AjaxWebClient</code><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">isLeaf</code><emclass="property"> = True</em><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.isLeaf"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">allowedMethods</code><emclass="property"> = ('POST',)</em><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.allowedMethods"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_client_sessid</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.get_client_sessid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_sessid"title="Permalink to this definition">¶</a></dt>
<dd><p>Helper to get the client session id out of the request.</p>
<codeclass="sig-name descname">get_browserstr</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.get_browserstr"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_browserstr"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_login</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.at_login"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.at_login"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when this session gets authenticated by the server.</p>
<codeclass="sig-name descname">lineSend</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">csessid</span></em>, <emclass="sig-param"><spanclass="n">data</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.lineSend"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.lineSend"title="Permalink to this definition">¶</a></dt>
<dd><p>This adds the data to the buffer and/or sends it to the client
<codeclass="sig-name descname">client_disconnect</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">csessid</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.client_disconnect"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.client_disconnect"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">mode_init</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_init"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_init"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called by render_POST when the client requests an init
<codeclass="sig-name descname">mode_keepalive</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_keepalive"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_keepalive"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">mode_input</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_input"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_input"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called by render_POST when the client
<codeclass="sig-name descname">mode_receive</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_receive"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_receive"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called by render_POST when the client is telling us
that it is ready to receive data as soon as it is available.
This is the basis of a long-polling (comet) mechanism: the
server will wait to reply until data is available.</p>
<codeclass="sig-name descname">mode_close</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_close"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_close"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called by render_POST when the client is signalling
<codeclass="sig-name descname">render_POST</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">request</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.render_POST"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClient.render_POST"title="Permalink to this definition">¶</a></dt>
<dd><p>This function is what Twisted calls with POST requests coming
in from the ajax client. The requests should be tagged with
different modes depending on what needs to be done, such as
initializing or sending/receving data through the request. It
uses a long-polling mechanism to avoid sending data unless
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.webclient_ajax.</code><codeclass="sig-name descname">AjaxWebClientSession</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
<codeclass="sig-name descname">get_client_session</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.get_client_session"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.get_client_session"title="Permalink to this definition">¶</a></dt>
<dd><p>Get the Client browser session (used for auto-login based on browser session)</p>
<codeclass="sig-name descname">disconnect</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">reason</span><spanclass="o">=</span><spanclass="default_value">'Server disconnected.'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.disconnect"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.disconnect"title="Permalink to this definition">¶</a></dt>
<dd><p>Disconnect from server.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>reason</strong> (<em>str</em>) – Motivation for the disconnect.</p>
<codeclass="sig-name descname">at_login</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.at_login"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.at_login"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">data_in</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.data_in"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_in"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">data_out</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.data_out"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_out"title="Permalink to this definition">¶</a></dt>
<dd><p>Data Evennia -> User</p>
<dlclass="field-list simple">
<dtclass="field-odd">Keyword Arguments</dt>
<ddclass="field-odd"><p><strong>kwargs</strong> (<em>any</em>) – Options to the protocol</p>
<codeclass="sig-name descname">send_text</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_text"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_text"title="Permalink to this definition">¶</a></dt>
<dd><p>Send text data. This will pre-process the text for
color-replacement, conversion to html etc.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>text</strong> (<em>str</em>) – Text to send.</p>
</dd>
<dtclass="field-even">Keyword Arguments</dt>
<ddclass="field-even"><p><strong>options</strong> (<em>dict</em>) – Options-dict with the following keys understood:
- raw (bool): No parsing at all (leave ansi-to-html markers unparsed).
- nocolor (bool): Remove all color.
- screenreader (bool): Use Screenreader mode.
- send_prompt (bool): Send a prompt with parsed html</p>
<codeclass="sig-name descname">send_prompt</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_prompt"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_prompt"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">send_default</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">cmdname</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_default"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_default"title="Permalink to this definition">¶</a></dt>
<dd><p>Data Evennia -> User.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>cmdname</strong> (<em>str</em>) – The first argument will always be the oob cmd name.</p></li>
<li><p><strong>*args</strong> (<em>any</em>) – Remaining args will be arguments for <strong>cmd</strong>.</p></li>
</ul>
</dd>
<dtclass="field-even">Keyword Arguments</dt>
<ddclass="field-even"><p><strong>options</strong> (<em>dict</em>) – These are ignored for oob commands. Use command
arguments (which can hold dicts) to send instructions to the