实时通知的最佳方法

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:正如您在开始时所说,这并不是真正的编程问题。它可能被认为是题外话,回答这样的问题很少会得到奖励或欢迎。因此沉默。

【讨论】:

以上是关于实时通知的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 express.js 和 socket.io 构建推送通知系统的最佳方法

实时更新:订阅通知?

用 PHP 构建多通知系统的最佳方法

在颤动中触发通知的最佳方法

微信域名实时监控,域名被封立即通知的实现方法

来自服务器的 iPhone 实时通知,无需使用 Apple 推送通知