Node.js 和 socket.io 用于通知栏:我走对了吗?

Posted

技术标签:

【中文标题】Node.js 和 socket.io 用于通知栏:我走对了吗?【英文标题】:Node.js and socket.io for a notification bar : Am I going the right way? 【发布时间】:2013-07-24 03:57:08 【问题描述】:

我目前正在使用 Symfony2 编写一个非常标准的 Apache/php/mysql 网站,并考虑使用 Node 和 socket.io 来满足特殊需求:通知栏。没什么太花哨的,当您收到新朋友请求、新邮件时,通知就会亮起......

我不太喜欢定期从 ajax 循环请求我的数据库;我希望此功能具有完全可扩展性并且占用空间最小。

因此,我正在考虑在我的数据库服务器端发出一个定期请求,将我在 Node 中的打开套接字列表提供给每个相关用户的推送通知。

我走对了吗?

干杯

【问题讨论】:

MySQL 确实没有一个好的推送通知系统,但Redis 有。也许您可以使用辅助数据库仅用于通知,否则您将不得不积极轮询。 【参考方案1】:

您肯定走在正确的轨道上,但我建议将通知内容放在您的应用中,而不是轮询您的数据库。以好友请求为例,在好友请求发送时进行:

function send_friend_request($from, $to) 
    $mysqli->whatever you do with that;
    send_notification($to, 'You have a friend request!');

send_notification 是一种向您的 nodejs 服务器发送 POST 请求的方法。您的 nodejs 服务器接收 POST 并将消息转发给正在收听的任何人 $to

【讨论】:

以上是关于Node.js 和 socket.io 用于通知栏:我走对了吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何实现 Laravel、node.js、socket.io 和 redis 以使用数据库创建实时聊天/通知

Django:使用 Redis PubSub、Node.js 和 Socket.io 的 JSON 通知

Node js socket io chat 发送消息通知

express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器

显示在线关注者的最佳方式是啥,node.js/socket.io 和 Redis

Node.JS JavaScript socket.io 在微服务架构中发出消息