当前位置: 首页 > 面试题库 >

对于推送通知,是否必须使用websocket?

仇飞鹏
2023-03-14
问题内容

我在服务器端有PHP,在客户端有HTML和javascript

我正在制作一个应用程序,其中利益相关者键入一条消息,该消息实时广播到一个组的多个接收者。

我在Google上做了一些研究,我了解我需要使用WebSockets或Comet进行实时推送通知。WebSocket或Comet是向用户发送大量通知的必需项吗?

我的理解正确吗?有什么参考开始吗?


问题答案:

如果客户端是浏览器,则标准浏览器可以通过Ajax(例如http)请求或webSocket连接来连接服务器的仅有两种方式。因此,如果您希望客户从外界得到一些通知,则必须使用这两种机制之一。

HTTP请求是暂时的。 客户端请求服务器,服务器响应。HTTP请求非常适合客户端从服务器请求信息。它们不擅长服务器向客户端发送信息,因为通常客户端未连接。在某些黑客和变通办法中,客户端会按一定间隔“轮询”服务器,甚至服务器甚至会使用运行时间更长的请求来尝试模拟“推送”类型的系统,但充其量是次优的黑客。

webSocket是连续的连接。 客户端进行连接,并且只要双方都希望,连接就会保持原状。这样,任何一方都可以在需要时向另一方发送消息。这意味着服务器可以在需要时将数据“推送”到客户端。webSockets对于推送连接非常有效,因此建议使用(这是它们设计的主要目的之一)。

Comet是一个库,最初是为了使用HTTP在发明WebSockets之前以及随后得到广泛支持之前尝试“破解”或“模拟”推送而构建的。我不能认为没有理由要使用Comet而不是webSocket,除非您使用的旧浏览器不支持webSocket。

因此,如果您尝试对浏览器进行“实时服务器推送”,则必须从客户端获得一个连续连接的套接字,这意味着webSocket(或建立在webSocket之上的套接字(如socket.io))。

对于可以访问电话SDK的电话应用程序,可以使用操作系统内置的“推送”系统将一些消息从服务器推送到客户端。这与双向webSocket通道并不完全相同,但是由于您询问了“推送通知”,因此Android和IOS中都可用的OS推送服务也可以用作将通知从服务器推送到客户端的选项。这是有关iOS通知和Google Cloud Messaging的信息

截至2016年,人们还可以在除Microsoft浏览器(Edge或IE中尚不支持)以外的所有现代浏览器中使用服务器发送的事件将数据从服务器推送到客户端。这是浏览器兼容性表。服务器发送的事件使用持久的HTTP连接,特殊的MIME类型和支持的客户端,以便能够随时将事件从服务器发送到客户端。与webSockets不同,服务器发送的事件只是一种方式(从服务器到客户端)。然后,客户端将使用传统的Ajax调用,以便能够将数据发送到服务器(而使用webSocket的数据可以通过同一webSocket连接中的任何一种发送)。



 类似资料:
  • 我从苹果收到了这封电子邮件: 基于HTTP/2的Apple推送通知服务(APNs)提供程序API使您能够利用强大的功能,例如使用JSON Web令牌进行身份验证、改进的错误消息传递和按通知反馈。如果仍然使用传统二进制协议发送推送通知,请确保尽快升级到APNs提供程序API。APNs将不再支持传统的二进制协议在2021年3月31日之后。 要向我的应用程序发送推送通知,我使用Firebase云消息传递

  • 我在PushKit VoIP通知上发现了一些与Azure通知中心支持相关的帖子: https://social.msdn.microsoft.com/Forums/ie/en-US/afda14fe-1218-4ca1-a1ee-205ccd241d1a/support-for-apple-voip-pushkit-push-notifications?forum=notificationhubs

  • 我正在rails 5中编写一个Api Rest,使用gem'fcm'发送通知。我已经在android应用程序中配置了firebase,我可以从firebase控制台成功发送通知,但从rails api我无法在设备中接收通知,这是我的代码: 这是我的rails控制器: 我从邮递员执行这是执行控制器的路线: http://localhost:3000/acciones/enviar?here 将设备令

  • 离子推动 似乎是最好的解决办法。它“模拟”浏览器中的通知,使测试变得容易。有两个版本: > 1.0版:文档可在http://docs.ionic.io/v1.0/docs/push-overview上查阅。页面底部显示一个警告,表示要检查最新版本(2.0beta)。如果我一直留在页面中并尝试按照说明操作,那么一切似乎都运行得很好,但是如果我将推送发送到https://push.ionic.io/a

  • 首先,我想声明我一直在研究推送通知和web通知之间的关系,但我有点困惑。 我从这里读到PWAs的推送通知在Safari上的iOS(iPhone)不起作用:从PWA向iOS发送推送通知 然而,如果iPhone用户使用的是Chrome,这是否意味着它们可以工作呢?或者推送通知在任何浏览器上对iPhone中的PWAs都不起作用? 这就把我带到了web通知。web通知在后台对PWAs起作用吗?我的问题是w

  • 是否可以知道应用程序是否从消息推送中启动/打开? 我想发射活动可以在这里捕捉到: 然而,当应用程序处于后台时,如何从推送通知中检测到它被打开?