Использование socket.io в качестве API - PullRequest
7 голосов
/ 03 января 2012

Я удивлен, что не могу найти никаких вопросов по этому вопросу. Как вы реализуете REST поверх WebSockets равномерно? Я создаю веб-приложение и хотел бы использовать веб-сокеты поверх вызовов ajax.

Во-первых, как вы представляете URI? Во-вторых, как вы представляете методы HTTP (GET, PUT, POST,…)?

socket.emit('set', ...)
socket.emit('get', ...)
socket.emit('delete', ...)

Ответы [ 2 ]

10 голосов
/ 31 мая 2012

Эта ссылка, вероятно, описывает, что вы пытаетесь сделать:

Как Socket.io и RESTFul могут работать вместе?

Нет ничего плохого в том, чтобы хотеть иметь такие сообщения, как GET, SET, DELETE. Нет ничего плохого в том, чтобы повторно использовать существующую структуру API - вам все еще нужна маршрутизация, и URI может быть проанализирован вашей маршрутизацией на стороне сервера, чтобы соответствовать контроллеру для GET / SET / DELETE.

например:.

socket.emit('set', {uri: 'https://stackoverflow.com/questions/6339393/how-can-socket-io-and-restful-work-together', params: {someKey: "someValue}).

Это не зависит от того, что хорошо работает с веб-сокетами - двунаправленная связь, , но позволяет потоковые запросы, которые, вероятно, будут быстрее в зависимости от того, как часто вы опрашиваете свои данные.

Удачи и оставайся морозным!

10 голосов
/ 03 января 2012

Это не имеет смысла.Весь смысл использования WebSockets заключается в обходе накладных расходов, возникающих при выполнении HTTP-запросов.Вы хотите повторно реализовать HTTP поверх потокового HTTP.

В большинстве случаев это на самом деле вызовет больше накладных расходов, потому что, если клиент не поддерживает WebSockets или Flash-сокеты, он вернется к длинному опросу HTTP.,Это означает, что у вас есть фальшивый HTTP-запрос и фактический HTTP-запрос, доставляющий данные.

Если вы хотите создать приложение RESTful, используйте HTTP.

Если вы хотите создать управляемую событиямиприложение, используйте WebSockets.

Используйте правильный инструмент для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...