8

アイデア/コンテキスト:

ユーザーにちょっとした追加機能を提供することを考えています: プッシュ通知を追加したいです。これは使用例です:

プロフィール ページにゲストブックがあります。誰かがユーザーのゲストブックにメッセージを投稿すると、そのユーザーはプッシュ通知を受け取ります (もちろんオンラインの場合)。彼がオンラインでない場合は、次にオンラインになったときに、DB から通知を取得するだけです。

Node.JSサーバーで実行されているSocket.IOでこれを行うことを考えていました。私の現在のアプリケーションは PHP で構築されています (したがって、投稿などは PHP によって処理されます)。

すべてのオンライン ユーザーは、Socket.IO を使用して接続し、自分の通知をリッスンします。それらのソケットは、サーバー上の配列またはハッシュに保存されます。

これは私が念頭に置いている流れです:

  1. UserA が UserB のゲストブックにメッセージを投稿する
  2. Socket.IO が UserB に通知を発行するようにします (オンラインの場合、Socket.IO で知られています)。
  3. メッセージをDBに保存

ここでの問題は、「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 でどのように行うのでしょうか。つまり、PHP を使用して Socket.IO サーバーと通信するにはどうすればよいでしょうか。

どうもありがとう!

4

1 に答える 1

9

Express.js と CURL を使用して新しい通知を投稿することで、これを解決しました。Node.js サーバーは、/new_notification などの特定の URL をリッスンします。CURL を使用して Web サーバーからその URL への POST 要求を実行すると、新しい通知を追加して Socket.IO で処理できます (すべて同じ Node.js アプリケーション内で)。

于 2012-07-28T10:10:22.903 に答える