nitro_n2o.htm 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE html><html><head><meta charset="utf-8" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="description" content="" /><meta name="author" content="Maxim Sokhatsky" /><title>NITRO</title><link rel="stylesheet" href="https://n2o.dev/blank.css?v=2" /></head><body><nav>
  2. <a href="https://n2o.dev/ua/">DEV</a>
  3. <a href="index.html">NITRO</a>
  4. <a href="#" style="background:#ededed;">N2O</a>
  5. <div class="dropdown">
  6. <a onclick="drop()" class="dropbtn">UA</a>
  7. <div id="dropdown" class="dropdown-content">
  8. <a href="https://n2o.dev/deps/n2o/man/ua/n2o_nitro.htm">UA</a>
  9. <a href="https://n2o.dev/deps/n2o/man/de/n2o_nitro.htm">DE</a>
  10. <a href="https://ws.n2o.space/man/n2o_nitro.htm">EN</a>
  11. </div>
  12. </div>
  13. </nav><header>
  14. <a href="../index.html"><img src="https://openmoji.org/data/color/svg/1F525.svg" /></a>
  15. <h1>N2O</h1>
  16. </header>
  17. <main>
  18. <article>
  19. <section>
  20. <h3>ВСТУП</h3>
  21. <p>Модуль <a href="https://github.com/synrc/nitro/blob/master/src/nitro_n2o.erl">nitro_n2o</a>
  22. містить реалізацію протоколу <a href="http://nitrogenproject.com/demos">Nitrogen Web Framework</a>
  23. у відповідності до вимог специфікації N2O.</p>
  24. </section>
  25. <section>
  26. <h3>INIT</h3>
  27. <p>Повідомлення init викликає функцію event(init) модуля сторінки.
  28. Існує два способи передати бінарне повідомлення INIT.
  29. Перший спосіб — закодований в BERT #init record з бінарним токеном,
  30. який, зазвичай, створюється n2o_session, передається в #io record
  31. як параметр даних та зберігається на клієнті в localStorage чи Key Chain.
  32. Клієнти з недійсними токенами реєструються та отримують нові токени.</p>
  33. <figure><code>
  34. -record(init, { token :: binary() }).
  35. </code></figure>
  36. <p>Другий спосіб — бінарна текстова версія повідомлення, &lt;&lt;"N2O,"&gt;&gt;
  37. що, зазвичай, працює для хостів зі здатністю до неформатованої бінарної
  38. передачі, таких, як протокол WebSockets.
  39. </p>
  40. <figure><code>
  41. &lt;&lt;"N2O,",Token/binary>>
  42. </code></figure>
  43. <p>Щоб детальніше дізнатись про протокол видачі токенів дивіться
  44. модуль <a href="n2o_session.htm">n2o_session</a>.</p>
  45. </section>
  46. <section>
  47. <h3>PICKLE</h3>
  48. <p>Повідомлення pickle надсилає на сервер заздалегідь підготовлене (за
  49. допомогою сервера) зашифроване повідомлення.
  50. Такі повідомлення містять #ev record з інформацією викликача (зашифровані).
  51. Зашифровані повідомлення можуть подовжувати термін придатності токена сесії
  52. за допомогою оновлення токена клієнта при кожному UI
  53. запиті (відстеження активності користувачів), для включення цього режиму
  54. змінна середовища <b>nitro_prolongate</b> додатку n2o повинна бути <b>true</b>.</p>
  55. <div>
  56. <figure><code>
  57. -record(pickle, { source = [] :: [] | binary(),
  58. pickled = [] :: [] | binary(),
  59. args = [] :: list({atom(),any()}) }).
  60. -record(ev, { module = [] :: [] | atom(),
  61. msg = [] :: any(),
  62. trigger = [] :: [] | binary(),
  63. name = [] :: [] | binary() }).
  64. </code></figure>
  65. </div>
  66. </section>
  67. <section>
  68. <h3>DIRECT</h3>
  69. <p>Повідомлення direct надсилає дані без задіяння механізмів діалогу,
  70. сесії чи шифрування. Терм у полі data безпосередньо попадає в event
  71. функцію модуля-контроллеру сторінки.</p>
  72. <div>
  73. <figure><code>
  74. -record(direct, { data = [] :: any() }).
  75. </code></figure>
  76. </div>
  77. </section>
  78. <section>
  79. <h3>FLUSH</h3>
  80. <p>Повідомлення flush лише перенаправляє дані в сокет.</p>
  81. <div>
  82. <figure><code>
  83. -record(flush, { data = [] :: [] | list(#action{}) }).
  84. </code></figure>
  85. </div>
  86. </section>
  87. <section>
  88. <p>Можливо, Ви також бажаєте почитати про:
  89. <b>
  90. <a href="n2o_heart.htm">n2o_heart</a>,
  91. <a href="n2o_ftp.htm">n2o_ftp</a>
  92. </b>.
  93. </p>
  94. </section>
  95. </article>
  96. </main><footer>
  97. 2005—2019 © Synrc Research Center
  98. </footer>
  99. <script>function drop(){document.getElementById("dropdown").classList.toggle("show");}</script>
  100. </body></html>