实时通知的最佳方法

时间:2018-06-30 20:40:10

标签: php websocket pusher

首先:这是一个一般问题。我还没有任何代码,我只需要您的(专家)意见

好,就这样。

我正在创建一个网站来购买/销售东西,例如ebay,但规模不大(针对特定类型的产品)。而且我需要实时通知。直到现在,我都使用PHP / MySQL + jQuery / AJAX。但是我想要更好的东西。

如果某人购买了某物,则卖方需要获得购买某物的通知。通知可以(a)是“实时”(如果卖家在线)或(b)延迟并在卖家在线时显示。

我熟悉PHP,并且与Pusher混为一谈。这是要走的路吗?还是我需要类似(例如)棘齿的东西?还是一样?而我应该如何“创建”呢?

思考的方式如下:

  1. 将每个通知存储在数据库中
  2. 如果卖方(渠道)在线,则通过推送程序推送通知
  3. 如果卖方(渠道)处于离线状态,则在他上线时获取所有看不见的通知
  4. 如果看到通知,请在数据库中进行更新(或者只是从数据库中删除通知?)

在这类东西上有经验的人能给我一些建议吗?

谢谢!

PS:对不起我的英语(不是我的母语,希望大家都理解我的问题)

2 个答案:

答案 0 :(得分:1)

使用websocket可以最好地传递实时通知。您可以在服务器上实现Websocket体系结构以推送通知。但这有时可能是乏味且复杂的。而且,由于websocket使用开放式连接,因此它们需要服务器上的资源。

最好使用某些将其作为服务提供的平台。 Ably可能是不错的选择。它可以实时传输数据,并且性能非常好。

如果不实时传送数据,但具有几秒钟的延迟灵活性,也可以使用轮询。但这会带来很多网络开销。

答案 1 :(得分:0)

您可以本机使用websockets

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

这样的付费解决方案的原因之一

我确实注意到您从未真正提到要多快地显示通知。 Websocket是用于实时更新的,如果速度较慢,例如5到30秒,则将调用的脚本保持在最低限度,则在服务器上进行轮询可能会更容易。您可以进行智能轮询:一开始是快速的,而打开页面的时间越长,速度就越慢。尝试检查用户在做什么,鼠标光标是否在页面上移动?然后快速进行更新,否则减慢速度。用户正在滚动吗?等等

PS:正如您一开始所说的,这实际上不是编程问题。它可能被认为是题外话,回答这样的问题很少会受到奖励或欢迎。因此,沉默。