evennia/docs/2.x/api/evennia.server.portal.portalsessionhandler.html
Evennia docbuilder action e535f5782a Updated HTML docs.
2023-10-19 20:22:27 +00:00

412 lines
No EOL
26 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>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.server.portal.portalsessionhandler &#8212; Evennia 2.x documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut 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.portal.rss" href="evennia.server.portal.rss.html" />
<link rel="prev" title="evennia.server.portal.portal" href="evennia.server.portal.portal.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<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.portal.rss.html" title="evennia.server.portal.rss"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.portal.html" title="evennia.server.portal.portal"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</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.portalsessionhandler</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div 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" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.server.portal.portal.html"
title="previous chapter">evennia.server.portal.portal</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.server.portal.rss.html"
title="next chapter">evennia.server.portal.rss</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.server.portal.portalsessionhandler.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="evennia.server.portal.portalsessionhandler.html">2.x (main branch)</a></li>
<ul>
<li><a href="../1.3.0/index.html">1.3.0 (v1.3.0 branch)</a></li>
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.server.portal.portalsessionhandler">
<span id="evennia-server-portal-portalsessionhandler"></span><h1>evennia.server.portal.portalsessionhandler<a class="headerlink" href="#module-evennia.server.portal.portalsessionhandler" title="Permalink to this headline"></a></h1>
<p>Sessionhandler for portal sessions.</p>
<dl class="py class">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.portalsessionhandler.</code><code class="sig-name descname">PortalSessionHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.server.sessionhandler.html#evennia.server.sessionhandler.SessionHandler" title="evennia.server.sessionhandler.SessionHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.sessionhandler.SessionHandler</span></code></a></p>
<p>This object holds the sessions connected to the portal at any time.
It is synced with the servers equivalent SessionHandler over the AMP
connection.</p>
<p>Sessions register with the handler using the connect() method. This
will assign a new unique sessionid to the session and send that sessid
to the server using the AMP connection.</p>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Init the handler</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.at_server_connection">
<code class="sig-name descname">at_server_connection</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.at_server_connection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.at_server_connection" title="Permalink to this definition"></a></dt>
<dd><p>Called when the Portal establishes connection with the Server.
At this point, the AMP connection is already established.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.generate_sessid">
<code class="sig-name descname">generate_sessid</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.generate_sessid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.generate_sessid" title="Permalink to this definition"></a></dt>
<dd><p>Simply generates a sessid thats guaranteed to be unique for this Portal run.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>sessid</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.connect">
<code class="sig-name descname">connect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.connect" title="Permalink to this definition"></a></dt>
<dd><p>Called by protocol at first connect. This adds a not-yet
authenticated session using an ever-increasing counter for
sessid.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<em>PortalSession</em>) The Session connecting.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>We implement a throttling mechanism here to limit the speed at
which new connections are accepted - this is both a stop
against DoS attacks as well as helps using the Dummyrunner
tester with a large number of connector dummies.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.sync">
<code class="sig-name descname">sync</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.sync" title="Permalink to this definition"></a></dt>
<dd><p>Called by the protocol of an already connected session. This
can be used to sync the session info in a delayed manner, such
as when negotiation and handshakes are delayed.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<em>PortalSession</em>) Session to sync.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Called from portal when the connection is closed from the
portal side.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<em>PortalSession</em>) Session to disconnect.</p></li>
<li><p><strong>delete</strong> (<em>bool</em><em>, </em><em>optional</em>) Delete the session from
the handler. Only time to not do this is when
this is called from a loop, such as from
self.disconnect_all().</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.disconnect_all">
<code class="sig-name descname">disconnect_all</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.disconnect_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.disconnect_all" title="Permalink to this definition"></a></dt>
<dd><p>Disconnect all sessions, informing the Server.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_connect">
<code class="sig-name descname">server_connect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">protocol_path</span><span class="o">=</span><span class="default_value">''</span></em>, <em class="sig-param"><span class="n">config</span><span class="o">=</span><span class="default_value">{}</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.server_connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_connect" title="Permalink to this definition"></a></dt>
<dd><p>Called by server to force the initialization of a new protocol
instance. Server wants this instance to get a unique sessid and to be
connected back as normal. This is used to initiate irc/rss etc
connections.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>protocol_path</strong> (<em>str</em>) Full python path to the class factory
for the protocol used, eg
evennia.server.portal.irc.IRCClientFactory</p></li>
<li><p><strong>config</strong> (<em>dict</em>) Dictionary of configuration options, fed as
<strong>**kwarg</strong> to protocol class <strong>__init__</strong> method.</p></li>
</ul>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><strong>RuntimeError</strong> If The correct factory class is not found.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The called protocol class must have a method start()
that calls the portalsession.connect() as a normal protocol.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_disconnect">
<code class="sig-name descname">server_disconnect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em>, <em class="sig-param"><span class="n">reason</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.server_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Called by server to force a disconnect by sessid.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<em>portalsession</em>) Session to disconnect.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) Motivation for disconnect.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_disconnect_all">
<code class="sig-name descname">server_disconnect_all</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reason</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.server_disconnect_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_disconnect_all" title="Permalink to this definition"></a></dt>
<dd><p>Called by server when forcing a clean disconnect for everyone.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) Motivation for disconnect.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_logged_in">
<code class="sig-name descname">server_logged_in</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em>, <em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.server_logged_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_logged_in" title="Permalink to this definition"></a></dt>
<dd><p>The server tells us that the session has been authenticated.
Update it. Called by the Server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session logging in.</p></li>
<li><p><strong>data</strong> (<em>dict</em>) The session sync data.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_session_sync">
<code class="sig-name descname">server_session_sync</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">serversessions</span></em>, <em class="sig-param"><span class="n">clean</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.server_session_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.server_session_sync" title="Permalink to this definition"></a></dt>
<dd><p>Server wants to save data to the portal, maybe because its
about to shut down. We dont overwrite any sessions here, just
update them in-place.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serversessions</strong> (<em>dict</em>) <p>This is a dictionary</p>
<p><strong>{sessid:{property:value},…}</strong> describing
the properties to sync on all sessions.</p>
</p></li>
<li><p><strong>clean</strong> (<em>bool</em>) If True, remove any Portal sessions that are
not included in serversessions.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.count_loggedin">
<code class="sig-name descname">count_loggedin</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">include_unloggedin</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.count_loggedin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.count_loggedin" title="Permalink to this definition"></a></dt>
<dd><p>Count loggedin connections, alternatively count all connections.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>include_unloggedin</strong> (<em>bool</em>) Also count sessions that have</p></li>
<li><p><strong>yet authenticated.</strong> (<em>not</em>) </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>count (int)</em> Number of sessions.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.sessions_from_csessid">
<code class="sig-name descname">sessions_from_csessid</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">csessid</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.sessions_from_csessid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.sessions_from_csessid" title="Permalink to this definition"></a></dt>
<dd><p>Given a session id, retrieve the session (this is primarily
intended to be called by web clients)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>csessid</strong> (<em>int</em>) Session id.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>session (list)</em> The matching session, if found.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.announce_all">
<code class="sig-name descname">announce_all</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.announce_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.announce_all" title="Permalink to this definition"></a></dt>
<dd><p>Send message to all connected sessions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>message</strong> (<em>str</em>) Message to relay.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This will create an on-the fly text-type
send command.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.data_in" title="Permalink to this definition"></a></dt>
<dd><p>Called by portal sessions for relaying data coming
in from the protocol to the server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<em>PortalSession</em>) Session receiving data.</p>
</dd>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><p><strong>kwargs</strong> (<em>any</em>) Other data from protocol.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Data is serialized before passed on.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.portalsessionhandler.PortalSessionHandler.data_out">
<code class="sig-name descname">data_out</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">session</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/portalsessionhandler.html#PortalSessionHandler.data_out"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.portalsessionhandler.PortalSessionHandler.data_out" title="Permalink to this definition"></a></dt>
<dd><p>Called by server for having the portal relay messages and data
to the correct session protocol.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session sending data.</p>
</dd>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><p><strong>kwargs</strong> (<em>any</em>) Each key is a command instruction to the
protocol on the form key = [[args],{kwargs}]. This will
call a method send_&lt;key&gt; on the protocol. If no such
method exixts, it sends the data to a method send_default.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<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.portal.rss.html" title="evennia.server.portal.rss"
>next</a> |</li>
<li class="right" >
<a href="evennia.server.portal.portal.html" title="evennia.server.portal.portal"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</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.portalsessionhandler</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>