git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8295 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
66a5e08516
commit
de8ffc8a58
@ -1,114 +0,0 @@ |
||||
|
||||
<h1><a name="spidermonkey" id="spidermonkey">SpiderMonkey</a></h1> |
||||
<div class="level1"> |
||||
|
||||
<p> |
||||
SpiderMonkey is a high performance Java networking engine, aiming to provide game developers a stable and efficient networking system. It's also perfectly capable of doing anything other than game networking. SpiderMonkey is part of jME3 and can be found in the src/networking directory. |
||||
</p> |
||||
|
||||
<p> |
||||
<strong>Author:</strong> Lars 'Levia' Wesselius<br/> |
||||
|
||||
<strong>License:</strong> <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://www.opensource.org/licenses/bsd-license.php"><param name="text" value="<html><u>New BSD license</u></html>"><param name="textColor" value="blue"></object><br/> |
||||
|
||||
<strong>Blog:</strong> <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://codeninja.me/tag/spidermonkey/"><param name="text" value="<html><u>http://codeninja.me/tag/spidermonkey/</u></html>"><param name="textColor" value="blue"></object><br/> |
||||
|
||||
<strong>Forum:</strong> <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://jmonkeyengine.org/groups/spidermonkey/forum/"><param name="text" value="<html><u>http://jmonkeyengine.org/groups/spidermonkey/forum/</u></html>"><param name="textColor" value="blue"></object><br/> |
||||
|
||||
<br/> |
||||
|
||||
</p> |
||||
|
||||
<p> |
||||
A tutorial trail can be found below, and below that all different aspects of SpiderMonkey are explained. These tutorials are to be updated upon SVN HEAD, so if new features are added in SVN, you should tutorials arriving of them soon. |
||||
|
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="tutorial_trail" id="tutorial_trail">Tutorial trail</a></h3> |
||||
<div class="level3"> |
||||
<ol> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/connection.html" class="wikilink1" title="spidermonkey:tutorial:connection">Connections</a></div> |
||||
</li> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/sending_and_receiving_messages.html" class="wikilink1" title="spidermonkey:tutorial:sending_and_receiving_messages">Sending and receiving messages</a></div> |
||||
</li> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/serializing.html" class="wikilink1" title="spidermonkey:tutorial:serializing">Serialization</a></div> |
||||
</li> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/compression.html" class="wikilink1" title="spidermonkey:tutorial:compression">Compression</a></div> |
||||
</li> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/services.html" class="wikilink1" title="spidermonkey:tutorial:services">Services</a></div> |
||||
</li> |
||||
<li class="level1"><div class="li"> <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/streaming.html" class="wikilink1" title="spidermonkey:tutorial:streaming">Streaming</a></div> |
||||
</li> |
||||
</ol> |
||||
|
||||
</div> |
||||
|
||||
<h2><a name="explanation_of_spidermonkey_s_inner_workings" id="explanation_of_spidermonkey_s_inner_workings">Explanation of SpiderMonkey's inner workings</a></h2> |
||||
<div class="level2"> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="connection_protocols" id="connection_protocols">Connection protocols</a></h3> |
||||
<div class="level3"> |
||||
|
||||
<p> |
||||
SpiderMonkey supports both TCP and UDP, and is also extendable to provide others. Possible future protocols may be RUDP, UDP Lite, and SCTP. SCTP will be added in Java 7, and will therefore probably added to SpiderMonkey after it's released. Please note that the language level of SpiderMonkey is 1.5, so it will definitely not be part of the standard <acronym title="Application Programming Interface">API</acronym> for a few years. |
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="clients" id="clients">Clients</a></h3> |
||||
<div class="level3"> |
||||
|
||||
<p> |
||||
SpiderMonkey creates two connections by default. A TCP connection for a reliable connection, and an UDP 'connection' <sup><a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top">1)</a></sup> for fast message handling. A problem arises here: these two connections mean that even though there are two connections, there's only one client to represent both the connections. In SpiderMonkey you don't have to worry about that. The server has a client manager which deals with this problem. Upon connecting, clients have to send a ClientRegistration message to link their TCP and UDP connections together. Upon receiving those two messages, server combines the clients into one, and provides this client to you. This means you can call both TCP and UDP methods on the client. If you still want to receive the 'local' client of a connection, you can do so by calling the appropriate messages in the Server class. |
||||
|
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="serializing" id="serializing">Serializing</a></h3> |
||||
<div class="level3"> |
||||
|
||||
<p> |
||||
Serializing is an aspect that received a lot of attention. I wanted it to be simple for people to register their own messages, but also be able to register serializers for their own object types. The system works by registering classes to serializers. Generally, a serializer does not exist without a class it can serialize - simply because it doesn't have to: Why have a serializer when there's nothing to serialize. A lot of work has been put into making it as efficient as possible. What can be left out, is left out, and what can optimized, is optimized. |
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h5><a name="field_serializer" id="field_serializer">Field serializer</a></h5> |
||||
<div class="level5"> |
||||
|
||||
<p> |
||||
The default serializer requires some explanation. This serializer serializes all classes that have no (registered) serializer. The field serializer works by saving all fields internally, so it can access them on serialization faster. The fields are taken, and their types are checked. They are put through a serializer again (which serializer depends, of course, on the data type). Then they are ready to be written to the buffer. As you can tell, this is quite a simple serializer, and should be used if your message don't require extra attention. See <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/serializing.html" class="wikilink1" title="spidermonkey:tutorial:serializing">this tutorial</a> if you want to know how to register your own messages or serializers. |
||||
|
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="service_system" id="service_system">Service system</a></h3> |
||||
<div class="level3"> |
||||
|
||||
<p> |
||||
The service system is in fact a tiny system. It's meant to solve a small, but annoying problem. Imagine you have SpiderMonkey as your networking library, and other people have made extra's for it. Excellent, of course, but they may all require different initialization! Perhaps you have to instantiate one yourself by using new, or maybe another works by calling a factory method; the service system exists to avoid that problem. All extras should use this system. Please see <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/services.html" class="wikilink1" title="spidermonkey:tutorial:services">the service tutorial</a> on how to use this system. |
||||
|
||||
</p> |
||||
|
||||
</div> |
||||
|
||||
<h3><a name="compression" id="compression">Compression</a></h3> |
||||
<div class="level3"> |
||||
|
||||
<p> |
||||
By default SpiderMonkey supports compressing messages. It's been made to where you have complete freedom over what messages you wish to compress. See <a href="/com/jme3/gde/core/docs/spidermonkey/tutorial/compression.html" class="wikilink1" title="spidermonkey:tutorial:compression">this tutorial</a> on how to use these special messages. |
||||
|
||||
</p> |
||||
|
||||
</div> |
||||
<div class="footnotes"> |
||||
<div class="fn"><sup><a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot">1)</a></sup> |
||||
UDP is connectionless</div> |
||||
</div> |
||||
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/spidermonkey?do=export_xhtmlbody">view online version</a></em></p> |
Loading…
Reference in new issue