实时通知的最佳方法
Posted
技术标签:
【中文标题】实时通知的最佳方法【英文标题】:best approach for realtime notifications 【发布时间】:2018-06-30 20:40:10 【问题描述】:首先:这是一个一般问题。我还没有任何代码,我只需要您的(专家)意见。
好的,就这样吧。
我正在创建一个用于购买/销售东西的网站,例如 ebay,但规模不大(针对特定类型的产品)。我需要实时通知。直到现在,我使用 php/mysql + jQuery/AJAX。但我想要更好的东西。
如果有人买东西,卖家需要收到买东西的通知。通知可以 (a) 是“实时的”(如果卖家在线)或 (b) 延迟并在卖家上线时显示。
我对 PHP 很熟悉,并且在 Pusher 上“玩弄过”。这是要走的路吗?还是我需要(例如)棘轮之类的东西?或者这只是一样?我应该如何“创造”这个?
我认为我应该这样做的方式如下:
-
将每个通知存储在数据库中
如果卖家(渠道)在线,通过推送器推送通知
如果卖家(渠道)离线,则在他上线时获取所有看不见的通知
如果看到通知,请在数据库中更新它(或者可能只是从数据库中删除通知?)
对这类东西有(一些)经验的人能给我一些建议吗?
提前致谢!
PS:对不起我的英语(不是我的母语,希望大家能理解我的问题)
【问题讨论】:
【参考方案1】:您可以在本地使用 websocket:
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
https://www.html5rocks.com/en/tutorials/websockets/basics/
https://caniuse.com/#search=websocket
注意第一个链接中提到的库。
Websocket 确实会使用您服务器上的资源(打开连接),因此这可能是选择像 https://pusher.com/pricing 这样的付费解决方案的原因之一
我确实注意到您从未真正提到您希望通知显示的速度有多快。 Websockets 用于实时更新,如果任何速度较慢,比如 5 - 30 秒,那么如果调用的脚本保持在最低限度,那么在服务器上轮询可能会更容易。您可以智能地轮询:开始时快,页面打开时间越长越慢。尝试检查用户在做什么,鼠标光标是否在页面上移动?然后快速进行更新,否则减慢速度。用户在滚动吗?等等。
PS:正如您在开始时所说,这并不是真正的编程问题。它可能被认为是题外话,回答这样的问题很少会得到奖励或欢迎。因此沉默。
【讨论】:
以上是关于实时通知的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章