php - 使用 Socket.IO 和 PHP 推送通知

标签 php socket.io

想法/背景:

我正在考虑为我的用户提供一个不错的额外功能:我想添加推送通知。这是用例:

人们在他们的个人资料页面上有一个留言簿。当有人在用户的留言簿中发布消息时,该用户将收到推送通知(当然如果他在线)。如果他不在线,下次他上线时,我们只会从数据库中拉取通知。

我正在考虑使用在 Node.JS 服务器上运行的 Socket.IO 来执行此操作。我当前的应用程序是用 PHP 构建的(因此发布等由 PHP 处理)。

所有在线用户都将使用 Socket.IO 连接以监听他们自己的通知。他们的套接字将保存在服务器上的数组或哈希中。

这是我想到的流程:

  1. 用户A在用户B的留言簿中留言
  2. 让 Socket.IO 向 UserB 发出通知(如果在线,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);

问题:

您对此有何看法?有没有更好的方法来实现这个看似很小的功能?而且,我将如何在 PHP 中执行 socketio_emit(),换句话说:我如何使用 PHP 与 Socket.IO 服务器通信?

非常感谢!

最佳答案

我通过使用 Express.js 和 CURL 发布新通知解决了这个问题。 Node.js 服务器监听特定的 URL,例如/新通知。使用 CURL 从我的网络服务器向该 URL 发出 POST 请求,我可以添加新通知并使用 Socket.IO 处理它们(所有这些都在同一个 Node.js 应用程序中)。

关于php - 使用 Socket.IO 和 PHP 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550103/

相关文章:

node.js - 如何测量使用 socket.io 内部传输的数据大小

php - filter_var() 接受无效的 URL

php - 最佳实践 : how to implement an invitation system in Zend Framework?

node.js - 使用 socket.io 在其他客户端计算机中显示鼠标指针移动

javascript - Socket.io 未发出超过 1 个事件

python - 如何在 python 中实现 pub/sub socket.io 客户端?

使用框架构建的 php CMS 系统 - php framework AND php CMS

php - Laravel Cache 不在生产服务器上存储缓存文件

javascript - 以正确的格式将数据保存到 JSON 文件 - PHP

java - Socket.io 连接不适用于多个 fragment