Push-уведомления с использованием Socket.IO и PHP

Идея/контекст:

Я думаю о том, чтобы предоставить своим пользователям приятную маленькую дополнительную функцию :Я хочу добавить push-уведомления. Это вариант использования:

У людей есть гостевая книга на странице их профиля. Когда кто-то публикует сообщение в гостевой книге пользователя, этот пользователь получит push-уведомление (, если он, конечно же, находится в сети ). Если он не в сети, в следующий раз, когда он появится в сети, мы просто вытащим уведомления из БД.

Я думал о том, чтобы сделать это с Socket.IO, работающим на сервере Node.JS. Мое текущее приложение построено на PHP (, поэтому публикация и т. д. обрабатывается PHP ).

Все онлайн-пользователи будут подключаться с помощью Socket.IO для прослушивания собственных уведомлений. Их сокет будет сохранен в массиве или хеше на сервере.

Это поток, который я имею в виду:

  1. Пользователь А публикует сообщение в гостевой книге пользователя Б
  2. Сделать так, чтобы Socket.IO отправлял уведомление пользователю B (, если он находится в сети, как это известно Socket.IO )
  3. . Сохраните сообщение в БД

Проблема здесь заключается в том, что «заставляет Socket.IO выдавать уведомление » -. Мне нужен способ сделать это из PHP,потому что я хочу, чтобы сервер выдавал это уведомление, а не пользователь , который публикует сообщение. Почему ты спрашиваешь? Я хочу, чтобы злоумышленники не создавали поддельные уведомления. Таким образом, в псевдокоде приложение PHP будет выглядеть так:

// do some validations here...

// This is the message that was posted
$message = array(
    'from' => 'UserA',
    'to' => 'UserB',
    'msg' => 'Hello you'
);

// Send a notification to the user by emitting an event
socketio_emit('notification', json_encode($message));

save_in_db($message);

Вопрос (с):

Что вы думаете об этом? Есть ли лучшие способы реализовать эту, казалось бы, небольшую функцию? А также, как мне сделать socketio_emit()в PHP, другими словами :, как мне общаться с сервером Socket.IO с помощью PHP?

Большое спасибо!

8
задан EsTeGe 18 July 2012 в 21:08
поделиться