Если есть ресурс REST, который я хочу отслеживать для изменений или модификаций от других клиентов, каков наилучший способ (и самый RESTful) для этого?
Одна из моих идей для этого - предоставить определенные ресурсы, которые будут поддерживать соединение открытым, а не немедленно возвращаться, если ресурс пока не существует. Например, учитывая ресурс:
/game/17/playerToMove
a "GET" на этом ресурсе может сказать мне, что мой противник переключается. Вместо того, чтобы постоянно опробовать этот ресурс, чтобы узнать, когда он повернется, я могу отметить номер перемещения (скажем, 5) и попытаться извлечь следующий ход:
/game/17/move/5
В "нормальной" модели REST кажется, что запрос GET для этого URL-адреса будет возвращать ошибку 404 (не найден). Однако, если вместо этого сервер поддерживал соединение открытым, пока мой оппонент не сыграл свой ход, то есть:
PUT /game/17/move/5
тогда сервер может вернуть содержимое, которое мой оппонент выставляет на этот ресурс. Это обеспечило бы мне нужные мне данные, а также своеобразное уведомление о том, когда мой оппонент переехал, не требуя опроса.
Является ли такая схема RESTful? Или это нарушает какой-то принцип REST?