отправка сообщения в websockets на интервале - PullRequest
5 голосов
/ 22 июля 2011

Я пытаюсь встроить функцию «просмотра последних запросов» в свой веб-сайт.По сути, я хотел бы отображать новый недавний поиск на веб-сайте каждые 5 секунд.

Каков наилучший способ сделать это?Я думал о том, чтобы каждая страница подключалась к моему серверу с помощью socket.io, а затем каждые 5 секунд передавала сообщения всем сокетам о новых поисках.На стороне клиента, после получения сообщения от сервера на сокете, я буду использовать некоторый клиентский javascript для обновления последней части поиска на веб-странице.

Это лучший способ сделать это?Если да, то как мне это реализовать?

Я использую node.js / express.

Ответы [ 2 ]

7 голосов
/ 22 июля 2011

Примерно так ...

var io = require('socket.io').listen(3001);

// Send to Everyone
setTimeout(function() {
  io.sockets.send('message');
}, 5000 );

// Send to Everyone on channel test123
setTimeout(function() {
  io.sockets.emit('test123', {test: "success!"} );
}, 5000 );

(Не проверено, но должно работать. Требуется Socket.IO 0.7.x или новее. Дайте мне знать, как это происходит =].

Заметьте, однако, что это не самый оптимальный способ обработки этого. Было бы лучше, если бы вы использовали события, чтобы сигнализировать серверу отправлять новые данные клиенту. Например, когда вы добавляетеновые данные в вашу базу данных, в то время (и только в это время) отправляют новые данные клиенту. Это немного глупо и неэффективно проверять каждые 5 секунд, когда вы можете проектировать вокруг него. Весь смысл Socket.IO состоит в том, чтобы подтолкнуть, а не для опроса. Новые технологии требуют нового мышления.

Кроме того, очень важно отображать недавние поисковые запросы: Эти ссылки обычно НИКОГДА не отображаются для пользователей,так как они часто слишком случайны, чтобы быть полезными. Возможно, самые популярные запросы, но эта информация не будет меняться достаточно регулярно, чтобы гарантировать такое частое обновление. Кроме того, большинство людей используют эту технику для получения своего веб-сайта.перечислены для страницы, для которой они не имеют истинного содержания.Важно отметить, что если вы разрешаете поисковым системам доступ к этим страницам (не внося их в черный список страниц результатов поиска в robots.txt), вы подвергаетесь ОЧЕНЬ высокому риску получения некачественного флага от Google.

Мой самый искренний совет: хотя эта функция может быть полезной, особенно для консоли администратора, она совершенно бесполезна для посетителей и может нанести ущерб эффективности SEO вашего сайта, добавляя в индекс Google низкокачественный контент и загружает его.ссылок никуда не полезных.Я бы даже не показывал это.

1 голос
/ 22 июля 2011

Если вы выбираете установленное время, например, 5 секунд, то я не верю, что вам нужно будет установить сокет io.Просто сделайте setInterval и каждые 5 секунд запрашивайте у сервера новые недавние поиски.Это также будет означать, что вызовы для недавних поисков не будут синхронизированы, что гарантирует, что серверу не нужно отправлять обновления всем сразу (как это было бы с socket.io и трансляцией новых последних поисковых сообщений)

...