Вопрос

(Я не знаком с спокойным, пожалуйста, поправьте меня, если моя концепция неверна)

В спокойной архитектуре мы сопоставляем все действия на URL. Если я нажму «опубликовать статью», пусть это на самом деле URL http://example.com/ и некоторые данные action=post&content=blahblah.

Если я хочу опубликовать, но не обновить всю веб -страницу, я могу использовать xmlhttprequest JavaScript. Я публикую его, а затем получаю его контент и вставляю его в Div на моей странице. Это действие все асинхронно.

Тогда я знаю, что есть что -то названное WebSocket И это обертка socket.io. Анкет Он использует «сообщение» для связи между клиентом и сервером. Когда я нажимаю «публиковать» клиент, просто позвоните socket.send(data) и подождать сервера client.send(data). Анкет Это волшебно. Но как насчет URL?

Можно использовать две модели, но не повторяя себя? Другим словом, каждое действие имеет свой URL, и некоторые из них могут взаимодействовать с пользователем в реальном времени (by socket.io?)

Более того, мне это сделать? В очень интерактивной веб -программе (Ex. Games) Restful по -прежнему значимы?

Это было полезно?

Решение

Вы определяете обработчик для действий, которые отображаются на HTTP. Поместите и получите, как правило, обратитесь к обновлению и запросу над сущностью. Нет абсолютно никаких причин, по которой вы не можете просто определить обработчик для общих версий этих операций CRUD, которые можно использовать в обоих контекстах. То, как я обычно делаю это, заключается в представлении концепции «маршрута» на транспорт в реальном времени и отображая их обратно с теми же обработчиками CRUD.

У вас есть сеанс, вы можете навязывать тот же ACL и т. Д.

 +---------------------------------+
 |                                 |
 |      BROWSER                    |
 |                                 |
 +--+--^-------------------+---^---+
    |  |                   |   |
    |  |                   |   |
 +--v--+---+            +--v---+---+
 |         |            |          |
 | HTTP    |            | SOCKET.IO|
 +--+---^--+            +--+---^---+
    |   |                  |   |
 +--v---+------------------v---+---+
 |                                 |
 |        ROUTING/PUBSUB           |
 +-+--^-------+--^-------+--^------+
   |  |       |  |       |  |
 +-v--+--+  +-v--+--+  +-v--+-+
 |       |  |       |  |      |
 | USERS |  | ITEMS |  |ETC   |
 +-------+  +-------+  +------+
     ENTITY CRUD HANDLERS

Другие советы

я опубликовал это в моем блоге совсем недавно:

Проектирование API CRUD для веб -билетов

При здании Сварка, мы используем и REST, и WebSockets (Socket.io). Три наблюдения на веб -окетах:

  1. Поскольку WebSockets настолько свободны, вы можете назвать события, как вы хотите, но в конечном итоге невозможно отладить.
  2. В веб -окетах нет формы запроса/ответа HTTP, поэтому иногда может быть трудно сказать, откуда происходит событие или отправится.
  3. Было бы неплохо, если бы веб -тока могли вписаться в существующую структуру MVC в приложении, предпочтительно, используя те же контроллеры, что и API REST.

Мое решение:

  • У меня есть два файла маршрутизации на моем сервере: Routes-rest.js а также маршруты-нокеты.js
  • Мои события выглядят как этот пример: "AppServer/user/create".
  • я использую Правовые удары («/»), Чтобы события выглядели как пути маршрутизации.
  • Первая строка - это цель (~ «Имя хоста», если это на самом деле было путем).
  • Вторая строка - это модель.
  • Третья строка - это Глагол Crud: т.е. Создать, читать, обновить, удалить.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top