想法/背景:
我正在考虑为我的用户提供一个不错的额外功能:我想添加推送通知。这是用例:
人们在他们的个人资料页面上有一个留言簿。当有人在用户的留言簿中发布消息时,该用户将收到推送通知(如果他当然在线)。如果他不在线,下次他上线时,我们将只从数据库中提取通知。
我正在考虑使用在 Node.JS 服务器上运行的 Socket.IO 来执行此操作。我当前的应用程序是用 PHP 构建的(因此发布等由 PHP 处理)。
所有在线用户都将使用 Socket.IO 连接以收听自己的通知。他们的套接字将保存在服务器上的数组或哈希中。
这是我想到的流程:
- UserA 在 UserB 的留言簿中留言
- 使 Socket.IO 向 UserB 发出通知(如果在线,则由 Socket.IO 知道)
- 将消息保存在数据库中
这里的问题是“使 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 服务器进行通信?
非常感谢!