Разница примерно такая:
SockJS = websocket + эмуляция для старых браузеров (long polling и т.д.)
Socket.io = websocket + эмуляция для старых браузеров (long polling и т.д.) + обертка (каналы, бродкастинг, встроеная сериализация и еще куча полезностей)
Есть еще один момент socket.io содержит более 500 issues на гитхабе (неисправленных ошибок) и не обновлялся 7 месяцев… :(, у sock.js такого нет.
Ну да, здесь общая логика такая, чтобы при первом запросе на сервере отдать уже полностью готовую страницу (чтобы поисковики нормально индексировали), нужно делать render после того, как все данные в модель уже загрузились.
subscribe регистрирует подписку на данные, но кроме того его callback срабатывает тогда, когда данные полностью загрузились в модель.
Если же вынести рендер, то пользователь все-равно увидит все то же самое, да и в случае, если этот код будет на клиенте — тоже разницы не будет. Вопрос именно в случае сервера, что отправит сервер клиенту и важно это лишь для индексации.
Володь, у тебя render в примерах вынесен из subscribe, это не будет приводить (в случае сервера) к тому, что на клиента будет передаваться (рендериться) страница без данных, а данные будут подтягиваться позже?
D:\node\derby>derby --help
Usage: derby [options] [command]
Commands:
new [dir] [app]
Create a new Derby project. If no directory name is specified, or the
name `.` is used, the project will be created in the current directory.
A name for the default app may be specified optionally.
Options:
-h, --help output usage information
-V, --version output the version number
-c, --coffee create files using CoffeeScript
-n, --noinstall do not run `npm install`
D:\node\derby>derby -V
0.5.9
Регистрируешься, переходишь по stackoverflow.com/tags, вбиваешь derbyjs, наводишь мышку на выбранный tag (derbyjs выделенный сереньким), ждешь пол секунды — всплывает небольшое окошко с описанием тега, в правом верхнем углу есть кнопочки «subscribe» и «rss», выбираешь нужную и, вуаля, готово.
Разница примерно такая:
SockJS = websocket + эмуляция для старых браузеров (long polling и т.д.)
Socket.io = websocket + эмуляция для старых браузеров (long polling и т.д.) + обертка (каналы, бродкастинг, встроеная сериализация и еще куча полезностей)
Есть еще один момент socket.io содержит более 500 issues на гитхабе (неисправленных ошибок) и не обновлялся 7 месяцев… :(, у sock.js такого нет.
subscribe регистрирует подписку на данные, но кроме того его callback срабатывает тогда, когда данные полностью загрузились в модель.
Если же вынести рендер, то пользователь все-равно увидит все то же самое, да и в случае, если этот код будет на клиенте — тоже разницы не будет. Вопрос именно в случае сервера, что отправит сервер клиенту и важно это лишь для индексации.
Вопросы и обсуждения там же — github.com/codeparty/derby/issues
А на текущий момент? :)