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

通过Socket.IO的PHP应用程序+基于WebSocket的通知

经慈
2023-03-14
问题内容

我有一个使用laravel用PHP编写的Web应用程序。

现在,我必须添加实时通知系统,该系统可以从服务器->客户端推送消息,并且可以检索从客户端->服务器推送的消息。

由于Socket.IO向后兼容且性能下降,因此我想将其用于WebSocket / AJAX轮询部分。

问题是默认情况下Socket.IO可与Node.JS后端一起使用。

我具有对服务器的root访问权限,并行运行(Apache和Node)或添加任何其他东西都没有问题。

问题是, 如何从PHP向Node + Sockets.IO发送消息?

然后, 如何将消息从Sockets.IO + Node传输到PHP?

我将“节点+套接字到浏览器”部分省略了,因为这很简单。

我已经看到了使用Express.js +CURL和/或POST请求的示例,但是,难道没有更低级别的方法吗?

我知道DNode + PHP,但是我无法想象如何组装所有东西-Apache,PHP,Node,Socket.IO,DNode,以便它们可以无缝地协同工作。

另外,我已经将此PHP WebSockets服务器实现转换为laravel库。但是,该库的问题在于它在客户端使用了干净的WebSockets。而且,我找不到与Socket.IOclient一起破解它的方法。


问题答案:

本教程使用PHP和Socket.IO回答了问题的主要部分。

socket.io不是您唯一的选择。看一下实时网络技术指南。从外观上看,目前最好的基于PHP的解决方案是Ratchet。这需要作为一个单独的进程运行,因此您仍然会遇到跨进程通信问题。

常见的跨进程通信问题是使用消息队列。然后,当您希望您的Apache上运行的PHP应用程序被告知实时Web技术的事件时,就会出现问题。即使是从实时Web技术流程到apache服务器的调用,您也可能必须通过Web调用来执行此操作。

另一种选择是将实时通信卸载到我工作的托管服务(如Pusher)中。



 类似资料:
  • 因为socket.io是向后兼容的,并且可以很好地降级,所以我想将它用于WebSocket/AJAX轮询部分。 问题是socket.io默认情况下与Node.js后端一起工作。 我对服务器有root访问权限,并行运行两者(Apache和Node)或添加任何额外的东西都没有问题。 我知道DNode+PHP,但我无法想象如何组装所有东西--Apache、PHP、Node、Socket.io、DNode

  • 你知道如何从PHP向IOS应用程序发送推送通知吗? 这是某人的最佳答案http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 但它不起作用:

  • 我刚刚在AWS EKS上部署了基于websocket的echo服务器。我看到它运行稳定且正常,但当我搜索实现细节时,我发现只有一些文章提到了nginx-ingres-controller或AWS-application-loadbalancer,以及它们的许多问题。 我是否错过了当前香草配置中的任何内容?我需要AWS ALB或nginx入口控制器吗? 谢谢你所有的回复。祝你一切顺利。

  • 问题内容: 我有一组打印机通过网络连接,并且为每台打印机分配了静态IP。 现在,我在Linux服务器上运行了一个PHP Web应用程序,该服务器需要通过网络将打印作业发送到这些打印机。 使用lpr或杯子可以吗,我该怎么办。 问题答案: 您可以从此处使用LPR打印机类: http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printi

  • 显示 “无法导入资源”@AcmeDemoBundle/Controller/SecuredController。php“from”D:/UserData/WWWRoot/Symfony/app/config/routing。yml”。确保“AcmeDemoBundle/Controller/SECUEDCONTROLLER”。php“bundle已正确注册并加载到应用程序内核类中。” 这是我的 处

  • 本文向大家介绍PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】,包括了PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP基于PDO调用sqlserver存储过程的方法。分享给大家供大家参考,具体如下: 由于业务这边存储过程一直在sqlserver上面,所以要用php去调用它,然而我们本地的是