PartyKit: Real-Time Collaboration English для веб-розробників
Вивчіть англійську лексику для створення програм реального часу за допомогою PartyKit — PartyServer, кімнати, трансляція, гіпноз і події WebSocket — для розробників ESL.
PartyKit — платформа для створення спільних застосунків в реальному часі за допомогою WebSockets. Ви пишете клас сервера, який виконується у хмарі і обробляє з’ єднання, повідомлення і стан кожної « кімнати », у той час як клієнт з’ єднується за допомогою простого SDK, заснованого на WebSocket. PartyKit часто використовується для спільного редагування, індикаторів присутності, багатокористувацьких ігор і живих панелей управління. У цій статті пояснюється словниковий запас, з яким ви зіткнетеся під час читання документації щодо PartyKit або роботи над функцією реального часу.
Сервер-сторонній словник
** PartyServer ** — клас TypeScript, який ви створюєте на стороні сервера, який PartyKit створює раз на кімнату; у ньому використовуються методи циклу життя, такі як onConnect, onMessage і onClose, які ви перезапускаєте, щоб реалізувати вашу логіку.
- “Ми написали клас PartyServer для функції спільної роботи з білою дошкою, який зберігає стан полотна у сховищі кімнати і передає оновлення всім під’ єднаним клієнтам.” *
** onConnect ** — метод циклу життя, який викликається кожного разу, коли новий клієнт встановлює з’ єднання WebSocket з кімнатою; ви можете використовувати його для надсилання новому клієнту поточного стану кімнати, щоб він міг негайно наздоганяти.
- “У onConnect ми отримуємо останній стан документа зі сховища кімнати і надсилаємо його безпосередньо до новоз’ єднаного клієнта, перш ніж він зможе отримати нові трансляції.” *
** onMessage ** — метод циклу життя, який викликається кожного разу, коли клієнт надсилає повідомлення на сервер; він отримує необроблений рядок повідомлення і об’ єкт з’ єднання відправника.
- “Наша обробка onMessage аналізує вхідну операцію JSON, застосовує її до спільного стану, а потім передає зміни всім іншим з’ єднаним клієнтам.” *
** onClose ** — метод циклу життя, який викликається, коли з’ єднання WebSocket клієнта закривається, або тому, що користувач відійшов, або через помилку мережі; використовується для оновлення інформації про присутність.
- “Метод onClose вилучає від’ єднаного користувача зі списку присутності і передає оновлений список іншим клієнтам, щоб показ курсора залишався точним.” *
З’єднання і зв’язки
** кімната ** — логічна одиниця ізоляції у PartyKit; кожна кімната має свій власний екземпляр PartyServer, свій власний постійний об’ єкт зберігання даних і свій власний набір з’ єднаних клієнтів, які визначаються унікальним іменем кімнати у адресі URL.
- “Ми створюємо окрему кімнату для кожного документа у редакторі, щоб користувачі, які працюють над різними документами, ніколи не отримували оновлення один від одного.” *
** з’ єднання кімната/ клієнт ** — клієнтський екземпляр PartySocket (або нативний WebSocket), який з’ єднується з певною адресою URL кімнати; він видає стандартні події WebSocket, такі як open, message і close.
- “Ми відкриваємо з’ єднання сторона/ клієнт, коли користувач відкриває документ, і закриваємо його, коли користувач відходить, запобігаючи накопиченню відкритих з’ єднань.” *
** ID з’ єднання ** — унікальний ідентифікатор, який PartyKit присвоює кожному окремому з’ єднанню WebSocket; ви можете використовувати його для надсилання повідомлення певному клієнту, а не для трансляції повідомлення до всіх клієнтів у кімнаті.
- “Ми зберігаємо ідентифікатор з’ єднання кожного клієнта поряд з його ім’ ям користувача, щоб сервер міг надсилати прямі приватні повідомлення певному учаснику без попередження інших.” *
Повідомлення і трансляція
** broadcast ** — дія надсилання повідомлення всім клієнтам, які з’ єднані з кімнатою; метод room.broadcast() PartyServer обробляє це повідомлення за допомогою одного виклику.
“Після застосування операції редагування до стану спільного документа, ми викликаємо room.broadcast() для відсилання операції до кожного іншого клієнта за менше ніж 20 мс.”
** send ** — метод, який використовується для доставки повідомлення до одного певного з’ єднання замість його трансляції до всіх клієнтів; викликається як connection.send(message) всередині сервера.
“Ми викликаємо connection.send () в onConnect, щоб надати початковий стан тільки новоприєднаному клієнту, уникаючи непотрібного транслювання користувачам, які вже мають цей стан.”
Гібернація і стійкість
** hibernation ** — функція PartyKit, яка призупиняє екземпляр PartyServer, якщо не з’ єднано жодного клієнта, зберігаючи його об’ єм пам’ яті, але звільнюючи обчислювальні ресурси; екземпляр буде автоматично пробуджено, коли з’ єднається новий клієнт.
- “Гібернація означає, що наш сервер документів для спільної роботи не коштує нічого, коли ніхто не редагує його, на відміну від традиційного сервера WebSocket, який має працювати безперервно.” *
** кімната для зберігання ** — постійний ключ- значення для зберігання даних, що стосується однієї кімнати, який PartyKit надає PartyServer; дані, записані у кімнату для зберігання, зберігаються після перезавантаження сервера і перезавантаження у режимі сну.
- “Ми записуємо авторитетний стан документа у сховище кімнати після кожних 50 операцій, щоб перезапуск сервера міг відновити останню версію без повторення всієї історії подій.” *
Practice
Створити мінімальний сервер PartyKit з методами ** onConnect **, ** onMessage ** і ** onClose **. У onConnect надіслати клієнту поточне значення з кімнати зберігання. У ** onMessage ** оновити сховище і ** транслювати ** зміни. Англійською мовою поясніть колегі, чому гибернація важлива для керування витратами і яку проблему вирішує кімнатне зберігання для користувачів, які з’ єднуються після того, як сервер перейшов у режим сну.
Розвиток мови: розробка мовного забезпечення для немовляти
Основні концепції PartyKit - кімнати, трансляції і зимовий сон - технічні, але ефективне їх обмінювання англійською мовою в професійному середовищі розробки вимагає більше, ніж просто знати слова. Багато не рідних англомовних людей знаходять такі нюанси, як неявна відповідальність, точний зворотній зв’язок і співпрацюючі пропозиції особливо викликаючими. Це не просто про те, щоб сказати «виправити це»; це про те, як ви це кажете і контекст навколо запиту. Розглянемо деякі типові сценарії, де ці тонкі відмінності мають значне значення.
Розгляньте коментар перегляду коду на PR, який описує нову можливість для гри з декількома гравцями. Людина, для якої мова є рідною, може написати: « Це можна поліпшити, додавши обробку помилок, щоб запобігти несподіваним роз’ єднанням ». Людина, для якої мова не є рідною, може перекласти це буквально — можливо, сказавши: « Це потребує поліпшення, оскільки не передбачено обробки помилок, щоб запобігти несподіваним роз’ єднанням ». Хоча це технічно коректно, у цьому тексті не вистачає негайності і тону співпраці, які характерні для типового зворотного зв’ язку. Національна фраза підступно говорить про потенційну проблему, яку * слід * розв’ язувати проактивно. Аналогічно, в розмовах Slack, де обговорюється стабільність кімнати, хтось може сказати: «Спостерігається періодичне активування режиму сну; чи можемо ми дослідити це?» Слово «здається» визнає невизначеність і запрошує до подальшого обговорення, тоді як пряме твердження на кшталт «Спостерігається невдача режиму сну» може звучати обвинувальним або відкидаючим. Зрозуміти тонкі способи англомовних людей, які формують проблеми і пропонують рішення, є ключовим для ефективної співпраці. Визнаючи, що «запропоновані зміни» часто мають більшу вагу, ніж просто заява про те, що потрібно зробити, дозволяє вам відповідати стратегічно і впевнено. Це навчання * як * просити про допомогу, як давати зворотній зв’язок, і як робити значний внесок у обговорення команди.
Іншою частою перешкодою є опис технічних специфікацій в PR-описах. Розробники часто використовують такі фрази, як «надійна архітектура» або «масштабне рішення», що може звучати абстрактно і залякати тих, хто не знайомий зі звичайним індустріальним жаргоном. Краще розбити аргументи, які стоять за цими термінами — наприклад, замість того, щоб сказати « Нова реалізація сервера забезпечує надійну архітектуру », ви можете сказати « Ми розробили сервер для обробки великої кількості одночасних користувачів і підтримки стабільної продуктивності під великим навантаженням ». Ця ясність уникає неоднозначності і забезпечує, що всі розуміють аргументи.
Нарешті, пам’ятайте, що активне слухання і пояснення є ключем. Не вагайтеся попросити когось перефразувати щось, якщо це не зрозуміло, або пояснити * чому * певна фраза є кращою. Метою є не тільки зрозуміти самі слова, але і намір за ними.
# Example of using `partykit` CLI to manage a room:
# This demonstrates how you might describe a command in a PR description, focusing on the outcome.
partykit rooms create --name "GlobalChatRoom" --description "A room for all users to chat."