compression.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Compression :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/spidermonkey/tutorial/compression.html">
  8. <meta name="generator" content="Antora 2.3.3">
  9. <link rel="stylesheet" href="../../../_/css/site.css">
  10. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  11. <meta property="og:description" content="Compression">
  12. <meta property="og:title" content="jMonkeyEngine Docs">
  13. <link rel="stylesheet" href="../../../_/css/site-extra.css">
  14. <link rel="stylesheet" href="../../../_/css/vendor/docsearch.min.css">
  15. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css -->
  16. <link rel="icon" href="../../../_/img/favicon.ico" type="image/x-icon">
  17. </head>
  18. <body class="article">
  19. <header class="header">
  20. <nav class="navbar">
  21. <div class="navbar-brand">
  22. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  23. <img alt="" src="../../../_/img/jme-logo.png" height="32" type="image/x-icon">
  24. </a>
  25. <div class="navbar-item hide-for-print">
  26. <input id="search-input" type="text" placeholder="Search docs">
  27. </div>
  28. <button class="navbar-burger" data-target="topbar-nav">
  29. <span></span>
  30. <span></span>
  31. <span></span>
  32. </button>
  33. </div>
  34. <div id="topbar-nav" class="navbar-menu">
  35. <div class="navbar-end">
  36. <div class="navbar-item theme-switch-wrapper">
  37. <label class="theme-switch" for="checkbox">
  38. <input type="checkbox" id="checkbox" />
  39. <div class="slider round"></div>
  40. </label>
  41. </div>
  42. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  43. </div>
  44. </div>
  45. </nav>
  46. </header>
  47. <div class="body">
  48. <div class="nav-container" data-component="docs" data-version="master">
  49. <aside class="nav">
  50. <div class="panels">
  51. <div class="nav-panel-menu is-active" data-panel="menu">
  52. <nav class="nav-menu">
  53. <h3 class="title"><a href="../../documentation.html">Docs</a></h3>
  54. <ul class="nav-list">
  55. <li class="nav-item" data-depth="0">
  56. <ul class="nav-list">
  57. <li class="nav-item" data-depth="1">
  58. <a class="nav-link" href="../../documentation.html">Getting Started</a>
  59. </li>
  60. <li class="nav-item" data-depth="1">
  61. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.3.2-stable">JavaDoc</a>
  62. </li>
  63. <li class="nav-item" data-depth="1">
  64. <a class="nav-link" href="../../jme3.html">jMonkeyEngine 3</a>
  65. </li>
  66. </ul>
  67. </li>
  68. <li class="nav-item" data-depth="0">
  69. <ul class="nav-list">
  70. <li class="nav-item" data-depth="1">
  71. <button class="nav-item-toggle"></button>
  72. <span class="nav-text">Tutorials</span>
  73. <ul class="nav-list">
  74. <li class="nav-item" data-depth="2">
  75. <button class="nav-item-toggle"></button>
  76. <a class="nav-link" href="../../tutorials/beginner/beginner.html">Beginner</a>
  77. <ul class="nav-list">
  78. <li class="nav-item" data-depth="3">
  79. <a class="nav-link" href="../../tutorials/beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  80. </li>
  81. <li class="nav-item" data-depth="3">
  82. <a class="nav-link" href="../../tutorials/beginner/hello_node.html">Hello Node</a>
  83. </li>
  84. <li class="nav-item" data-depth="3">
  85. <a class="nav-link" href="../../tutorials/beginner/hello_asset.html">Hello Asset</a>
  86. </li>
  87. <li class="nav-item" data-depth="3">
  88. <a class="nav-link" href="../../tutorials/beginner/hello_main_event_loop.html">Hello Update Loop</a>
  89. </li>
  90. <li class="nav-item" data-depth="3">
  91. <a class="nav-link" href="../../tutorials/beginner/hello_input_system.html">Hello Input System</a>
  92. </li>
  93. <li class="nav-item" data-depth="3">
  94. <a class="nav-link" href="../../tutorials/beginner/hello_material.html">Hello Material</a>
  95. </li>
  96. <li class="nav-item" data-depth="3">
  97. <a class="nav-link" href="../../tutorials/beginner/hello_animation.html">Hello Animation</a>
  98. </li>
  99. <li class="nav-item" data-depth="3">
  100. <a class="nav-link" href="../../tutorials/beginner/hello_picking.html">Hello Picking</a>
  101. </li>
  102. <li class="nav-item" data-depth="3">
  103. <a class="nav-link" href="../../tutorials/beginner/hello_collision.html">Hello Collision</a>
  104. </li>
  105. <li class="nav-item" data-depth="3">
  106. <a class="nav-link" href="../../tutorials/beginner/hello_terrain.html">Hello Terrain</a>
  107. </li>
  108. <li class="nav-item" data-depth="3">
  109. <a class="nav-link" href="../../tutorials/beginner/hello_audio.html">Hello Audio</a>
  110. </li>
  111. <li class="nav-item" data-depth="3">
  112. <a class="nav-link" href="../../tutorials/beginner/hello_effects.html">Hello Effects</a>
  113. </li>
  114. <li class="nav-item" data-depth="3">
  115. <a class="nav-link" href="../../tutorials/beginner/hello_physics.html">Hello Physics</a>
  116. </li>
  117. </ul>
  118. </li>
  119. <li class="nav-item" data-depth="2">
  120. <button class="nav-item-toggle"></button>
  121. <span class="nav-text">Intermediate</span>
  122. <ul class="nav-list">
  123. <li class="nav-item" data-depth="3">
  124. <a class="nav-link" href="../../tutorials/intermediate/best_practices.html">Best Practices</a>
  125. </li>
  126. <li class="nav-item" data-depth="3">
  127. <a class="nav-link" href="../../tutorials/intermediate/optimization.html">Optimization</a>
  128. </li>
  129. <li class="nav-item" data-depth="3">
  130. <a class="nav-link" href="../../tutorials/intermediate/faq.html">Frequently Asked Questions</a>
  131. </li>
  132. <li class="nav-item" data-depth="3">
  133. <a class="nav-link" href="../../tutorials/intermediate/math_for_dummies.html">Math for Dummies</a>
  134. </li>
  135. <li class="nav-item" data-depth="3">
  136. <a class="nav-link" href="../../tutorials/intermediate/math.html">Math overview</a>
  137. </li>
  138. <li class="nav-item" data-depth="3">
  139. <a class="nav-link" href="../../tutorials/intermediate/math_cheet_sheet.html">3D math "cheat sheet"</a>
  140. </li>
  141. <li class="nav-item" data-depth="3">
  142. <a class="nav-link" href="../../tutorials/intermediate/rotate.html">3-D Rotation</a>
  143. </li>
  144. <li class="nav-item" data-depth="3">
  145. <a class="nav-link" href="../../tutorials/intermediate/math_video_tutorials.html">Math video tutorial series</a>
  146. </li>
  147. <li class="nav-item" data-depth="3">
  148. <a class="nav-link" href="../../tutorials/intermediate/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  149. </li>
  150. <li class="nav-item" data-depth="3">
  151. <a class="nav-link" href="../../tutorials/intermediate/scenegraph_for_dummies.html">Scene Graph for Dummies</a>
  152. </li>
  153. <li class="nav-item" data-depth="3">
  154. <a class="nav-link" href="../../tutorials/intermediate/terminology.html">3D Graphics Terminology</a>
  155. </li>
  156. <li class="nav-item" data-depth="3">
  157. <a class="nav-link" href="../../tutorials/intermediate/how_to_use_materials.html">How to Use Materials</a>
  158. </li>
  159. <li class="nav-item" data-depth="3">
  160. <a class="nav-link" href="../../tutorials/intermediate/transparency_sorting.html">Transparency Sorting</a>
  161. </li>
  162. </ul>
  163. </li>
  164. </ul>
  165. </li>
  166. </ul>
  167. </li>
  168. <li class="nav-item" data-depth="0">
  169. <ul class="nav-list">
  170. <li class="nav-item" data-depth="1">
  171. <button class="nav-item-toggle"></button>
  172. <a class="nav-link" href="../../sdk/sdk.html">SDK</a>
  173. <ul class="nav-list">
  174. <li class="nav-item" data-depth="2">
  175. <button class="nav-item-toggle"></button>
  176. <span class="nav-text">Video Tutorials</span>
  177. <ul class="nav-list">
  178. <li class="nav-item" data-depth="3">
  179. <button class="nav-item-toggle"></button>
  180. <span class="nav-text">SDK Use Case Tutorials</span>
  181. <ul class="nav-list">
  182. <li class="nav-item" data-depth="4">
  183. <a class="nav-link" href="http://www.youtube.com/watch?v=-OzRZscLlHY">Demo 1 (Quixote demo)</a>
  184. </li>
  185. <li class="nav-item" data-depth="4">
  186. <a class="nav-link" href="http://www.youtube.com/watch?v=6-YWxD3JByE">Demo 2 (Models and Materials)</a>
  187. </li>
  188. </ul>
  189. </li>
  190. <li class="nav-item" data-depth="3">
  191. <button class="nav-item-toggle"></button>
  192. <span class="nav-text">SDK Tutorials</span>
  193. <ul class="nav-list">
  194. <li class="nav-item" data-depth="4">
  195. <a class="nav-link" href="http://www.youtube.com/watch?v=M1_0pbeyJzI">Basics</a>
  196. </li>
  197. <li class="nav-item" data-depth="4">
  198. <a class="nav-link" href="http://www.youtube.com/watch?v=nL7woH40i5c">Importing Models</a>
  199. </li>
  200. <li class="nav-item" data-depth="4">
  201. <a class="nav-link" href="http://www.youtube.com/watch?v=DUmgAjiNzhY">Dragging&amp;Dropping Nodes</a>
  202. </li>
  203. <li class="nav-item" data-depth="4">
  204. <a class="nav-link" href="http://www.youtube.com/watch?v=ntPAmtsQ6eM">Scene Composing</a>
  205. </li>
  206. <li class="nav-item" data-depth="4">
  207. <a class="nav-link" href="http://www.youtube.com/watch?v=zgPV3W6dD4s">Terrain with Collision Shape</a>
  208. </li>
  209. <li class="nav-item" data-depth="4">
  210. <a class="nav-link" href="http://www.youtube.com/watch?v=Feu3-mrpolc">Working with Materials</a>
  211. </li>
  212. <li class="nav-item" data-depth="4">
  213. <a class="nav-link" href="http://www.youtube.com/watch?v=MNDiZ9YHIpM">Custom Controls</a>
  214. </li>
  215. <li class="nav-item" data-depth="4">
  216. <a class="nav-link" href="http://www.youtube.com/watch?v=oZnssg8TBWQ">WebStart Deployment</a>
  217. </li>
  218. <li class="nav-item" data-depth="4">
  219. <a class="nav-link" href="http://www.youtube.com/watch?v=D7JM4VMKqPc">Animation and Effect TrackEditing</a>
  220. </li>
  221. </ul>
  222. </li>
  223. </ul>
  224. </li>
  225. <li class="nav-item" data-depth="2">
  226. <button class="nav-item-toggle"></button>
  227. <span class="nav-text">Getting Started</span>
  228. <ul class="nav-list">
  229. <li class="nav-item" data-depth="3">
  230. <a class="nav-link" href="../../sdk/update_center.html">Updating jMonkeyEngine SDK</a>
  231. </li>
  232. <li class="nav-item" data-depth="3">
  233. <a class="nav-link" href="../../sdk/troubleshooting.html">Troubleshooting</a>
  234. </li>
  235. </ul>
  236. </li>
  237. <li class="nav-item" data-depth="2">
  238. <button class="nav-item-toggle"></button>
  239. <span class="nav-text">Java Development Features</span>
  240. <ul class="nav-list">
  241. <li class="nav-item" data-depth="3">
  242. <a class="nav-link" href="../../sdk/project_creation.html">Project Creation</a>
  243. </li>
  244. <li class="nav-item" data-depth="3">
  245. <a class="nav-link" href="../../sdk/code_editor.html">Code Editor and Palette</a>
  246. </li>
  247. <li class="nav-item" data-depth="3">
  248. <a class="nav-link" href="../../sdk/version_control.html">File Version Control</a>
  249. </li>
  250. <li class="nav-item" data-depth="3">
  251. <a class="nav-link" href="../../sdk/debugging_profiling_testing.html">Debug, Profile, Test</a>
  252. </li>
  253. <li class="nav-item" data-depth="3">
  254. <button class="nav-item-toggle"></button>
  255. <a class="nav-link" href="../../sdk/application_deployment.html">Application Deployment</a>
  256. <ul class="nav-list">
  257. <li class="nav-item" data-depth="4">
  258. <a class="nav-link" href="../../sdk/default_build_script.html">Default Build Script</a>
  259. </li>
  260. <li class="nav-item" data-depth="4">
  261. <a class="nav-link" href="../../sdk/android.html">Android</a>
  262. </li>
  263. <li class="nav-item" data-depth="4">
  264. <a class="nav-link" href="../../sdk/android_cheat_sheet.html">Android Cheat Sheet</a>
  265. </li>
  266. <li class="nav-item" data-depth="4">
  267. <a class="nav-link" href="../../sdk/ios.html">iOS</a>
  268. </li>
  269. </ul>
  270. </li>
  271. </ul>
  272. </li>
  273. <li class="nav-item" data-depth="2">
  274. <button class="nav-item-toggle"></button>
  275. <span class="nav-text">Unique Features</span>
  276. <ul class="nav-list">
  277. <li class="nav-item" data-depth="3">
  278. <button class="nav-item-toggle"></button>
  279. <a class="nav-link" href="../../sdk/model_loader_and_viewer.html">Import, View, Convert Models</a>
  280. <ul class="nav-list">
  281. <li class="nav-item" data-depth="4">
  282. <a class="nav-link" href="../../sdk/asset_packs.html">Asset Packs</a>
  283. </li>
  284. </ul>
  285. </li>
  286. <li class="nav-item" data-depth="3">
  287. <a class="nav-link" href="../../sdk/scene_explorer.html">The SceneExplorer</a>
  288. </li>
  289. <li class="nav-item" data-depth="3">
  290. <a class="nav-link" href="../../sdk/scene_composer.html">Composing a Scene</a>
  291. </li>
  292. <li class="nav-item" data-depth="3">
  293. <a class="nav-link" href="../../sdk/terrain_editor.html">Terrain Editor</a>
  294. </li>
  295. <li class="nav-item" data-depth="3">
  296. <a class="nav-link" href="../../sdk/sample_code.html">Sample Code</a>
  297. </li>
  298. <li class="nav-item" data-depth="3">
  299. <a class="nav-link" href="../../sdk/material_editing.html">Material Editing</a>
  300. </li>
  301. <li class="nav-item" data-depth="3">
  302. <a class="nav-link" href="../../sdk/font_creation.html">Creating Bitmap Fonts</a>
  303. </li>
  304. <li class="nav-item" data-depth="3">
  305. <button class="nav-item-toggle"></button>
  306. <a class="nav-link" href="https://hub.jmonkeyengine.org/t/effecttrack-and-audiotrack-editing-in-the-sdk/23378">Audio and Effect Track Editing</a>
  307. <ul class="nav-list">
  308. <li class="nav-item" data-depth="4">
  309. <a class="nav-link" href="https://www.youtube.com/watch?v=D7JM4VMKqPc">Video: Effect and AudioTrack editing in jMonkeyEngine 3 sdk</a>
  310. </li>
  311. </ul>
  312. </li>
  313. <li class="nav-item" data-depth="3">
  314. <a class="nav-link" href="../../sdk/filters.html">Post-Processor Filter Editor and Viewer</a>
  315. </li>
  316. <li class="nav-item" data-depth="3">
  317. <a class="nav-link" href="../../jme3/advanced/application_states.html">Application States</a>
  318. </li>
  319. <li class="nav-item" data-depth="3">
  320. <a class="nav-link" href="../../jme3/advanced/custom_controls.html">Custom Controls</a>
  321. </li>
  322. <li class="nav-item" data-depth="3">
  323. <a class="nav-link" href="../../sdk/vehicle_creator.html">Vehicle Creator</a>
  324. </li>
  325. </ul>
  326. </li>
  327. <li class="nav-item" data-depth="2">
  328. <button class="nav-item-toggle"></button>
  329. <span class="nav-text">Advanced Usage</span>
  330. <ul class="nav-list">
  331. <li class="nav-item" data-depth="3">
  332. <a class="nav-link" href="../../sdk/build_platform.html">Building jMonkeyEngine SDK</a>
  333. </li>
  334. <li class="nav-item" data-depth="3">
  335. <a class="nav-link" href="../../sdk/use_own_jme.html#.adoc">Using your own (modified) version of jME3 in jMonkeyEngine SDK</a>
  336. </li>
  337. <li class="nav-item" data-depth="3">
  338. <a class="nav-link" href="../../sdk/increasing_heap_memory.html">Increasing Heap Memory</a>
  339. </li>
  340. <li class="nav-item" data-depth="3">
  341. <a class="nav-link" href="../../sdk/log_files.html">Log Files</a>
  342. </li>
  343. </ul>
  344. </li>
  345. <li class="nav-item" data-depth="2">
  346. <button class="nav-item-toggle"></button>
  347. <span class="nav-text">Available external plugins</span>
  348. <ul class="nav-list">
  349. <li class="nav-item" data-depth="3">
  350. <a class="nav-link" href="../../jme3/contributions.html">Contributions</a>
  351. </li>
  352. <li class="nav-item" data-depth="3">
  353. <a class="nav-link" href="../../sdk/neotexture.html">Neo Texture Editor for procedural textures</a>
  354. </li>
  355. <li class="nav-item" data-depth="3">
  356. <a class="nav-link" href="http://www.youtube.com/watch?v=yS9a9o4WzL8">Video: Mesh Tool &amp; Physics Editor</a>
  357. </li>
  358. </ul>
  359. </li>
  360. <li class="nav-item" data-depth="2">
  361. <button class="nav-item-toggle"></button>
  362. <a class="nav-link" href="../../sdk/development.html">Developing plugins for jMonkeyEngine SDK</a>
  363. <ul class="nav-list">
  364. <li class="nav-item" data-depth="3">
  365. <a class="nav-link" href="../../sdk/development/setup.html">Creating a plugin</a>
  366. </li>
  367. <li class="nav-item" data-depth="3">
  368. <a class="nav-link" href="../../sdk/development/general.html">Creating components</a>
  369. </li>
  370. <li class="nav-item" data-depth="3">
  371. <a class="nav-link" href="../../sdk/development/scene.html">The Main Scene</a>
  372. </li>
  373. <li class="nav-item" data-depth="3">
  374. <a class="nav-link" href="../../sdk/development/sceneexplorer.html">The Scene Explorer</a>
  375. </li>
  376. <li class="nav-item" data-depth="3">
  377. <a class="nav-link" href="../../sdk/development/projects_assets.html">Projects and Assets</a>
  378. </li>
  379. <li class="nav-item" data-depth="3">
  380. <a class="nav-link" href="../../sdk/development/extension_library.html">Create a library plugin from a jar file</a>
  381. </li>
  382. <li class="nav-item" data-depth="3">
  383. <a class="nav-link" href="../../sdk/development/model_loader.html">Create a new or custom model filetype and loader</a>
  384. </li>
  385. </ul>
  386. </li>
  387. </ul>
  388. </li>
  389. </ul>
  390. </li>
  391. </ul>
  392. </nav>
  393. </div>
  394. <div class="nav-panel-explore" data-panel="explore">
  395. <div class="context">
  396. <span class="title">Docs</span>
  397. <span class="version">master</span>
  398. </div>
  399. <ul class="components">
  400. <li class="component is-current">
  401. <span class="title">Docs</span>
  402. <ul class="versions">
  403. <li class="version is-current is-latest">
  404. <a href="../../documentation.html">master</a>
  405. </li>
  406. </ul>
  407. </li>
  408. <li class="component">
  409. <span class="title">Wiki UI</span>
  410. <ul class="versions">
  411. <li class="version is-latest">
  412. <a href="../../../wiki-ui/index.html">master</a>
  413. </li>
  414. </ul>
  415. </li>
  416. </ul>
  417. </div>
  418. </div>
  419. </aside>
  420. </div>
  421. <main class="article">
  422. <div class="toolbar" role="navigation">
  423. <button class="nav-toggle"></button>
  424. <nav class="breadcrumbs" aria-label="breadcrumbs">
  425. <ul>
  426. <li><a href="../../documentation.html">Docs</a></li>
  427. <li><a href="compression.html">Compression</a></li>
  428. </ul>
  429. </nav>
  430. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/docs/modules/ROOT/pages/spidermonkey/tutorial/compression.adoc">Edit this Page</a></div>
  431. </div>
  432. <div class="content">
  433. <article class="doc">
  434. <h1 class="page">Compression</h1>
  435. <div id="preamble">
  436. <div class="sectionbody">
  437. <div class="admonitionblock warning">
  438. <table>
  439. <tr>
  440. <td class="icon">
  441. <i class="fa icon-warning" title="Warning"></i>
  442. </td>
  443. <td class="content">
  444. <div class="paragraph">
  445. <p>This article covers a deprecated <abbr title="Application Programming Interface">API</abbr>! See <a href="../../jme3/advanced/networking.html" class="page">networking</a> for current documentation.</p>
  446. </div>
  447. </td>
  448. </tr>
  449. </table>
  450. </div>
  451. <div class="paragraph">
  452. <p>Now this is going to be a real simply tutorial but still I wanted this in a separate article. Why you may ask? Simply because it&#8217;s a feature that requires some explanation, since it has some caveats that I&#8217;ll discuss. Also, I&#8217;ll cover writing your own compression message.</p>
  453. </div>
  454. <div class="paragraph">
  455. <p>First off - there are two compression types in SpiderMonkey, they are GZip and Zip. Could&#8217;ve added more, but didn&#8217;t want to have a dependency for just a compression method. Both are used by wrapping your message in the appropriate compression message:</p>
  456. </div>
  457. <div class="listingblock">
  458. <div class="content">
  459. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">MyMessage msg = new MyMessage();
  460. client.send(new GZIPCompressedMessage(msg));
  461. // or
  462. client.send(new ZIPCompressedMessage(msg));</code></pre>
  463. </div>
  464. </div>
  465. <div class="paragraph">
  466. <p>Really simple, but ZIP requires some explanation. The ZIPCompressedMessage class also has two extra methods; setLevel(int) and getLevel(). These methods are for setting the compression level, where 1 is best compression but slowest, and where 9 is weakest compression but fastest. Please note that 9 is <strong>not</strong> the so called 'store' ZIP method, which simply stores file in the ZIP, instead of compressing it. This 'store' feature is not in SpiderMonkey since otherwise it would not have been called compression.</p>
  467. </div>
  468. </div>
  469. </div>
  470. <div class="sect1">
  471. <h2 id="writing-your-own"><a class="anchor" href="#writing-your-own"></a>Writing your own</h2>
  472. <div class="sectionbody">
  473. <div class="paragraph">
  474. <p>Now of course I&#8217;d love to see more compression methods in SpiderMonkey, so I&#8217;ll discuss how to write your own. Let&#8217;s just take GZIPCompressedMessage as example, since that one is the most straightforward. What I&#8217;ve done, is I&#8217;ve just created a GZIPCompressedMessage which extends CompressedMessage. It does not contain any extra messages, so the GZIPCompressedMessage class is practically 'empty'. The magic happens at the serializer, which is called the GZIPSerializer (you can read about writing your own serializer <a href="serializing.html" class="page">here</a>). Then I just registered the GZIPSerializer to GZIPCompressedMessage and presto - you&#8217;re done. Don&#8217;t forget that in the Serializer you need to use writeClassAndObject first and then compress that data, and for read you&#8217;d need to use readClassAndObject after you&#8217;ve uncompressed (inflated) the message. For this to be clear, it may be useful to read <a href="http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/networking/com/jme3/network/serializing/serializers/GZIPSerializer.java">the GZIPSerializer class</a>.</p>
  475. </div>
  476. <div class="paragraph">
  477. <p>That&#8217;s that! Next tutorial we&#8217;re going to discuss how to use the Service system.</p>
  478. </div>
  479. </div>
  480. </div>
  481. </article>
  482. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  483. <div class="toc-menu"></div>
  484. </aside>
  485. </div>
  486. </main>
  487. </div>
  488. <footer class="footer">
  489. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  490. </footer>
  491. <script src="../../../_/js/vendor/docsearch.min.js"></script>
  492. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  493. <script>
  494. var search = docsearch({
  495. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  496. indexName: 'jmonkeyengine',
  497. inputSelector: '#search-input',
  498. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  499. algoliaOptions: { hitsPerPage: 10 }
  500. }).autocomplete
  501. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  502. function focusSearchInput () { document.querySelector('#search-input').focus() }
  503. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  504. </script>
  505. <script src="../../../_/js/site.js"></script>
  506. <script async src="../../../_/js/vendor/highlight.js"></script>
  507. </body>
  508. </html>