Я пытаюсь реализовать простую систему уведомлений в Yii2. У меня есть список записей, заполненных в ListView. Я хотел бы разрешить пользователям голосовать за эту запись. Только один раз за запись. Также Автор каждой записи должен быть уведомлен (что-то вроде новых входящих электронных писем) о том, кто проголосовал за его запись. Как проще всего реализовать это в Yii2? Спасибо за совет!
Реализация системы уведомлений Yii2
Ответы (1)
Только с php вы не можете этого сделать, вам нужно иметь js в какой-то момент.
Решение Во-первых, со стороны пользователя B вы продолжаете спрашивать сервер через определенное время (используя ajax), произошло ли что-нибудь (событие). Если он возвращает результат с этим ajax и обновляет страницу. Но опять же, это не очень хорошая практика.
Если вам действительно нужно обновление в реальном времени, вы можете использовать socket.io. Опять же, использование сокета php - плохая идея.
Итак, решение второе: yii2 + redis + nodejs + socket
redis будет осуществлять связь между yii2 и nodejs. Идея состоит в том, что если что-то (событие или обновление) произойдет, yii2 опубликует event
с ассоциацией data
с redis channel
, а nodejs, который прослушивает этот канал, поймает это событие и отправит данные (или обновит) к клиенту с помощью сокета.
Вот учебник по чату в реальном времени с использованием yii2+redis+nodejs+socket.
io.on('connection', function (socket) {
socket.id
даст вам идентификатор, который вы должны каким-то образом сохранить, а затем при отправке сообщения пользователю вместо socket.emit
используйте io.sockets.to(socketId).emit
, где socketId< /b> — идентификатор сокета конкретного пользователя.
- person leninhasda; 15.03.2016