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 通知
express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器