私のWebアプリケーション(symfony3)では、リアルタイム通知システムを統合しようとしています。 私はこのような構成でこれを行うに選択: サーバNodeJS サーバのRedis socket.io-PHP-エミッタ(直接PHPから発光通知用のPHP adaptater) socket.iosocket.ioとredisによるリアルタイム通知
app.js(サーバノード)
var app = require('express')();
var http = require('http').Server(app);
var server = require('http').createServer();
var io = require('socket.io').listen(server);
var redis = require('socket.io-redis');
io.sockets.on('connection', function (socket) {
console.log('user connected!');
});
io.adapter(redis({ host: 'localhost', port: 6379 }));
server.listen(8081, 'myhost');
テストコントローラ
public function testAction(Request $request)
{
$notification = 'A message has been received by the server!<br />'
$form = $this->createFormBuilder()->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
$redis = new \Redis();
$redis->connect('127.0.0.1', '6379');
$emitter = new SocketIO\Emitter($redis);
$emitter->emit('notification', $notification);
$response = new JsonResponse();
$response->setData(array(
'notification' => $notification
));
return $response;
}
return $this->render('@PMPlatform/Test/test.html.twig', array(
'form' => $form->createView()
));
}
クライアントビュー
Okこの簡単なテストはうまくいきます:適切なビューからフォームを送信すると、このページにあるすべてのクライアントに通知が表示されます。
1-私は、1人のユーザーが他のユーザーに通知を送信できるようにしたいと考えています(ユーザーが投稿にコメントすると、投稿者は通知を受け取りました)。どのように私はこれを行うことができますか?
2著者が接続されていない場合、作成者が接続し直したときに通知を保存する方法を教えてください。
あなたが私に尋ねると、これはかなり広い質問です。これを達成する方法はたくさんあります。 1つの方法は、データベースに格納して、ページの読み込みまたは読み込みで取得することです。 –