evennia/docs/latest/api/evennia.server.portal.webclient_ajax.html
Evennia docbuilder action 243d596662 Updated HTML docs.
2025-08-15 18:14:21 +00:00

551 lines
No EOL
47 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>evennia.server.portal.webclient_ajax &#8212; Evennia latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
<link rel="stylesheet" type="text/css" href="../_static/nature.css?v=279e0f84" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e4a91a55" />
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.server.profiling" href="evennia.server.profiling.html" />
<link rel="prev" title="evennia.server.portal.webclient" href="evennia.server.portal.webclient.html" />
</head><body>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.server.profiling.html" title="evennia.server.profiling"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.webclient.html" title="evennia.server.portal.webclient"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.server.html" >evennia.server</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.server.portal.html" accesskey="U">evennia.server.portal</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.webclient_ajax</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.server.portal.webclient_ajax">
<span id="evennia-server-portal-webclient-ajax"></span><h1>evennia.server.portal.webclient_ajax<a class="headerlink" href="#module-evennia.server.portal.webclient_ajax" title="Link to this heading"></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
<a class="reference external" href="http://localhost:4001/">http://localhost:4001/</a>, whereas the webclient can be found on
<a class="reference external" href="http://localhost:4001/webclient">http://localhost:4001/webclient</a>.)</p>
<dl class="simple">
<dt>/webclient - this url is handled through djangos template</dt><dd><p>system and serves the html page for the client
itself along with its javascript chat program.</p>
</dd>
<dt>/webclientdata - this url is called by the ajax chat using</dt><dd><p>POST requests (long-polling when necessary)
The WebClient resource in this module will
handle these requests and act as a gateway
to sessions connected over the webclient.</p>
</dd>
</dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.LazyEncoder">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.server.portal.webclient_ajax.</span></span><span class="sig-name descname"><span class="pre">LazyEncoder</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">skipkeys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ensure_ascii</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_circular</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_nan</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sort_keys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">separators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#LazyEncoder"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.LazyEncoder" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">JSONEncoder</span></code></p>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.LazyEncoder.default">
<span class="sig-name descname"><span class="pre">default</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#LazyEncoder.default"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.LazyEncoder.default" title="Link 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
implement default like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">iterable</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span>
<span class="c1"># Let the base class default method raise the TypeError</span>
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.jsonify">
<span class="sig-prename descclassname"><span class="pre">evennia.server.portal.webclient_ajax.</span></span><span class="sig-name descname"><span class="pre">jsonify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#jsonify"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.jsonify" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.server.portal.webclient_ajax.</span></span><span class="sig-name descname"><span class="pre">AjaxWebClientSession</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><code class="xref py py-class docutils literal notranslate"><span class="pre">Session</span></code></a></p>
<p>This represents a session running in an AjaxWebclient.</p>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.__init__" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.get_client_session">
<span class="sig-name descname"><span class="pre">get_client_session</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.get_client_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.get_client_session" title="Link to this definition"></a></dt>
<dd><p>Get the Client browser session (used for auto-login based on browser session)</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>csession (ClientSession)</em> </p>
<dl class="simple">
<dt>This is a django-specific internal representation</dt><dd><p>of the browser session.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.disconnect">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">reason</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Server</span> <span class="pre">disconnected.'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.disconnect" title="Link to this definition"></a></dt>
<dd><p>Disconnect from server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>reason</strong> (<em>str</em>) Motivation for the disconnect.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.at_login">
<span class="sig-name descname"><span class="pre">at_login</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.at_login"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.at_login" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_in">
<span class="sig-name descname"><span class="pre">data_in</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.data_in"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_in" title="Link to this definition"></a></dt>
<dd><p>Data User -&gt; Evennia</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>kwargs</strong> (<em>any</em>) Incoming data.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_out">
<span class="sig-name descname"><span class="pre">data_out</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.data_out"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_out" title="Link to this definition"></a></dt>
<dd><p>Data Evennia -&gt; User</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>kwargs</strong> (<em>any</em>) Options to the protocol</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_text">
<span class="sig-name descname"><span class="pre">send_text</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_text"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_text" title="Link to this definition"></a></dt>
<dd><p>Send text data. This will pre-process the text for
color-replacement, conversion to html etc.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em>) Text to send.</p>
</dd>
<dt class="field-even">Keyword Arguments<span class="colon">:</span></dt>
<dd class="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>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_prompt">
<span class="sig-name descname"><span class="pre">send_prompt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_prompt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_prompt" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_default">
<span class="sig-name descname"><span class="pre">send_default</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cmdname</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClientSession.send_default"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_default" title="Link to this definition"></a></dt>
<dd><p>Data Evennia -&gt; User.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="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>
<dt class="field-even">Keyword Arguments<span class="colon">:</span></dt>
<dd class="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
client instead.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.server.portal.webclient_ajax.</span></span><span class="sig-name descname"><span class="pre">AjaxWebClient</span></span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Resource</span></code></p>
<p>An ajax/comet long-polling transport</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.client_protocol">
<span class="sig-name descname"><span class="pre">client_protocol</span></span><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.client_protocol" title="Link to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession" title="evennia.server.portal.webclient_ajax.AjaxWebClientSession"><code class="xref py py-class docutils literal notranslate"><span class="pre">AjaxWebClientSession</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.isLeaf">
<span class="sig-name descname"><span class="pre">isLeaf</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">True</span></em><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.isLeaf" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.allowedMethods">
<span class="sig-name descname"><span class="pre">allowedMethods</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Sequence</span><span class="p"><span class="pre">[</span></span><span class="pre">bytes</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">('POST',)</span></em><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.allowedMethods" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.__init__" title="Link to this definition"></a></dt>
<dd><p>Initialize.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_sessid">
<span class="sig-name descname"><span class="pre">get_client_sessid</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.get_client_sessid"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_sessid" title="Link to this definition"></a></dt>
<dd><p>Helper to get the client session id out of the request.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request object.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>csessid (int)</em> The client-session id.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_page_id">
<span class="sig-name descname"><span class="pre">get_client_page_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.get_client_page_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_page_id" title="Link to this definition"></a></dt>
<dd><p>Helper to get the client page id out of the request.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request object.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>csessid (int)</em> The client-page id.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.get_browserstr">
<span class="sig-name descname"><span class="pre">get_browserstr</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.get_browserstr"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_browserstr" title="Link to this definition"></a></dt>
<dd><p>Get browser-string out of the request.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request object.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>str</em> The browser name.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.at_login">
<span class="sig-name descname"><span class="pre">at_login</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.at_login"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.at_login" title="Link to this definition"></a></dt>
<dd><p>Called when this session gets authenticated by the server.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.lineSend">
<span class="sig-name descname"><span class="pre">lineSend</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">csessid</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.lineSend"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.lineSend" title="Link to this definition"></a></dt>
<dd><p>This adds the data to the buffer and/or sends it to the client
as soon as possible.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>csessid</strong> (<em>int</em>) Session id.</p></li>
<li><p><strong>data</strong> (<em>list</em>) A send structure [cmdname, [args], {kwargs}].</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.client_disconnect">
<span class="sig-name descname"><span class="pre">client_disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">csessid</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.client_disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.client_disconnect" title="Link to this definition"></a></dt>
<dd><p>Disconnect session with given id.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>csessid</strong> (<em>int</em>) Client page+session id.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.mode_init">
<span class="sig-name descname"><span class="pre">mode_init</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_init"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_init" title="Link to this definition"></a></dt>
<dd><p>This is called by render_POST when the client requests an init
mode operation (at startup)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.mode_keepalive">
<span class="sig-name descname"><span class="pre">mode_keepalive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_keepalive"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_keepalive" title="Link to this definition"></a></dt>
<dd><p>This is called by render_POST when the
client is replying to the keepalive.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.mode_input">
<span class="sig-name descname"><span class="pre">mode_input</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_input"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_input" title="Link to this definition"></a></dt>
<dd><p>This is called by render_POST when the client
is sending data to the server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.mode_receive">
<span class="sig-name descname"><span class="pre">mode_receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_receive"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_receive" title="Link 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>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.mode_close">
<span class="sig-name descname"><span class="pre">mode_close</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.mode_close"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_close" title="Link to this definition"></a></dt>
<dd><p>This is called by render_POST when the client is signalling
that it is about to be closed.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.server.portal.webclient_ajax.AjaxWebClient.render_POST">
<span class="sig-name descname"><span class="pre">render_POST</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/webclient_ajax.html#AjaxWebClient.render_POST"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.render_POST" title="Link 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
there is actual data available.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo of Evennia"/>
</a></p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.server.portal.webclient_ajax</a><ul>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.LazyEncoder"><code class="docutils literal notranslate"><span class="pre">LazyEncoder</span></code></a><ul>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.LazyEncoder.default"><code class="docutils literal notranslate"><span class="pre">LazyEncoder.default()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.jsonify"><code class="docutils literal notranslate"><span class="pre">jsonify()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession</span></code></a><ul>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.__init__"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.get_client_session"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.get_client_session()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.disconnect"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.disconnect()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.at_login"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.at_login()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_in"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.data_in()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.data_out"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.data_out()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_text"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.send_text()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_prompt"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.send_prompt()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClientSession.send_default"><code class="docutils literal notranslate"><span class="pre">AjaxWebClientSession.send_default()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient</span></code></a><ul>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.client_protocol"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.client_protocol</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.isLeaf"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.isLeaf</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.allowedMethods"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.allowedMethods</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.__init__"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_sessid"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.get_client_sessid()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_client_page_id"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.get_client_page_id()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.get_browserstr"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.get_browserstr()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.at_login"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.at_login()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.lineSend"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.lineSend()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.client_disconnect"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.client_disconnect()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_init"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.mode_init()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_keepalive"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.mode_keepalive()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_input"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.mode_input()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_receive"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.mode_receive()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.mode_close"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.mode_close()</span></code></a></li>
<li><a class="reference internal" href="#evennia.server.portal.webclient_ajax.AjaxWebClient.render_POST"><code class="docutils literal notranslate"><span class="pre">AjaxWebClient.render_POST()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.server.portal.webclient.html"
title="previous chapter">evennia.server.portal.webclient</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.server.profiling.html"
title="next chapter">evennia.server.profiling</a></p>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.server.portal.webclient_ajax.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li>
<a href="https://www.evennia.com/docs/latest/index.html">latest (main branch)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/5.x/index.html">v5.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/4.x/index.html">v4.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/3.x/index.html">v3.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/2.x/index.html">v2.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/1.x/index.html">v1.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/0.x/index.html">v0.9.5 branch (outdated)</a>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.server.profiling.html" title="evennia.server.profiling"
>next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.webclient.html" title="evennia.server.portal.webclient"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.server.html" >evennia.server</a> &#187;</li>
<li class="nav-item nav-item-5"><a href="evennia.server.portal.html" >evennia.server.portal</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.webclient_ajax</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>