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

     2023-03-07     300

关键词:

【中文标题】Socket.IO 上的 PHP 应用程序 + 基于 WebSocket 的通知【英文标题】:PHP application + WebSocket based notifications over Socket.IO 【发布时间】:2012-08-26 08:33:42 【问题描述】:

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

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

由于 Socket.IO 向后兼容并且可以优雅地降级,我想将它用于 WebSocket / AJAX 轮询部分。

问题是 Socket.IO 默认与 Node.JS 后端一起工作。

我对服务器具有 root 访问权限,并行运行(Apache 和 Node)或添加任何额外内容都没有问题。

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

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

我已将 Node + Sockets to Browser 部分排除在外,因为这很简单。

我已经看到使用Express.js + CURL and/or POST requests 的示例,但是,没有更低级别的方法吗?

我知道DNode + PHP,但我无法想象如何组装所有东西 - Apache、PHP、Node、Socket.IO、DNode,这样它们才能无缝地协同工作。

另外,我已经将这个 PHP WebSockets server 实现转换为 laravel 库。然而,这个库的问题在于它在客户端使用了干净的 WebSockets。而且,我找不到与Socket.IO client 一起破解它的方法。

【问题讨论】:

【参考方案1】:

using PHP and Socket.IO 上的本教程回答了您问题的主要部分。

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

常见的跨进程通信问题是使用消息队列。当您希望在 Apache 上运行的 PHP 应用程序能够获知来自实时 Web 技术的事件时,问题就出现了。您可能必须通过网络调用来完成此操作,即使它是从实时网络技术进程到 apache 服务器的调用。

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

这个最近的问题也很相关,并且有一些有用的链接:Is native PHP support for Web Sockets available?

【讨论】:

该死的,那个棘轮!它拥有! socketo.me/docs/push 有关于如何从非棘轮应用程序推送的分步教程。我在几分钟内实现了该功能。棘轮+10。 @leggetter 哇,对我来说,Pusher 看起来真的很简单。谢谢你分享这个。我想我会试一试。这更好,然后浪费我的时间来实现我自己的系统。 是的,Pusher.com 似乎是明智的选择! 这并没有解决问题的主要要求:USING Socket.IO @Hellen 我添加了一篇文章的链接,该文章直接回答了如何集成 Socket.IO 和 PHP。【参考方案2】:

Elephant.IO 支持 PHPSocket.IO 看看吧!

【讨论】:

【参考方案3】:

在 node 和 apache/php 之间没有一种简单的通信方式。因此,您要么必须在节点中再次编写所有功能(连接到 mysql 数据库等),要么创建一个 API 以从节点调用并传递给套接字。

但是,您可以使用像 Jquery graceful websockets 和 this php class 这样的 jquery 插件来通过 jquery 和 php 获得自己的 websockets 功能,而不是使用 sockets.io。

【讨论】:

socket.io 上的 Ajax 帖子

】socket.io上的Ajax帖子【英文标题】:Ajaxpostsonsocket.io【发布时间】:2014-08-2900:33:35【问题描述】:1)我想做一个在线测验。我使用socket.io只是监听节点,仅此而已。需要使用ajax来检索问题并使用php从数据库中回答它们。我在app.js... 查看详情

Heroku上的Socket.io“会话ID未知”错误

...2017-11-2908:00:02【问题描述】:我有一个使用Socket.io的NodeJS应用程序部署到heroku。我已按照https://devcenter.heroku.com/articles/node-websockets提供的步骤正确设置代 查看详情

Google App Engine 和 Socket.IO 上的移动聊天应用程序

】GoogleAppEngine和Socket.IO上的移动聊天应用程序【英文标题】:MobileChatapplicationonGoogleAppEngineandSocket.IO【发布时间】:2018-01-2921:31:48【问题描述】:我正在使用Node.JS的Socket.IO创建一个聊天应用程序,我需要澄清一些事情。我正在我... 查看详情

Heroku 上的 Socket.io 聊天应用程序与 node.js

】Heroku上的Socket.io聊天应用程序与node.js【英文标题】:Socket.iochatapponherokuwithnode.js【发布时间】:2012-08-1109:01:22【问题描述】:搞砸了Node.js,有点不知所措,因为我无法得到这么简单的东西。此代码在我的本地服务器上运行良... 查看详情

Android 上的 WebSockets 与 Android 中的 socket.io

...12:43:22【问题描述】:我希望通过新的基于Android的客户端应用程序来利用我的NodeJS+SocketIO服务器应用程序。目前我在Android中为Websockets使用okhttp3。但我想将WebSockets与s 查看详情

DigitalOcean 上的 NodeJS 服务器使用 socket.io 返回连接被拒绝

...述】:我试图将socket.io引入我在Laravel和AngularJS中开发的应用程序中。该应用程序在我的计算机上运行良好,但是当我尝试使其在服务器上运 查看详情

Heroku + socket.io 广播上的多个测功机

...一个问题,当我有超过1个测功机时,我在Heroku上的node.js应用程序中的socket.io广播似乎不起作用。一旦我将它缩放到1,它就可以完美运行。有什么我需要知道的吗?也许有一种不同的方式可以向所有测功机广播 查看详情

Android 上的 Socket IO 连接失败

...使用SocketIO、Android和Node创建一个简单的聊天。当我运行应用程序并尝试连接到服务器时,它总是失败并出现超时错误,我不知道为什么。这是节点代码:app=require(\'express\')()http=require(\'h 查看详情

Heroku 上的 Socket.io:客户端代码

】Heroku上的Socket.io:客户端代码【英文标题】:Socket.ioonHeroku:client-sidecode【发布时间】:2011-12-2606:10:28【问题描述】:我在Heroku上托管的Node.js应用上为我的JS客户端代码加载socket.io库时遇到了问题。现在,我的index.html文件末尾... 查看详情

如何在 node.js 服务器上的 PHP Web 服务器和 Socket.io 之间创建握手?

】如何在node.js服务器上的PHPWeb服务器和Socket.io之间创建握手?【英文标题】:HowtocreateahandshakebetweenPHPwebserverandSocket.ioonnode.jsserver?【发布时间】:2015-12-2003:23:18【问题描述】:我有一个websocket在服务器10.0.4.18的8020端口上的node.js4... 查看详情

node.js 上的 Socket.io-client 只工作一次

...是下面的代码只工作一次,然后sockei.io-client没有响应。应用程序不会停止,没有错误。varhttp=requ 查看详情

TCP 配置的 Amazon Elastic Load Balancer 上的 Socket.io Websockets

...【问题描述】:我计划在EC2上设置一组运行Socket.io的NodeJS应用程序服务器,并且我想使用ElasticLoadBalancer在它们之间 查看详情

PHP + socket.io(会话、授权和安全问题)

...时间】:2012-08-2422:48:09【问题描述】:我有一个工作的php应用程序,我想在其中添加实时支持。我想使用nodejs/socket.io来添加这种功能。我发现的第一个问题是如何在nodejs端正确授权用户(用户已经通过PHP会话在php后端进行了 查看详情

使用 Node.js/socket.io 和 php/mysql 的 Web 应用程序

】使用Node.js/socket.io和php/mysql的Web应用程序【英文标题】:WebapplicationusingNode.js/socket.ioandphp/mysql【发布时间】:2017-01-2511:51:00【问题描述】:我对node.js和socket.io比较陌生。目前我有一个完成了一半的私人网络项目,它只在服务器... 查看详情

os x 上的 node.js socket.io 服务器无法连接超过 120 个客户端

...3:41:40【问题描述】:我正在编写socket.io-clientnode.js机器人应用程序,以测试我的基于socket.io的服务器应用程序的性能也在节点下运行。服务器通常运行ubuntul 查看详情

带有 socket.io 和后端 php 的 Angular

...布时间】:2013-10-1314:16:00【问题描述】:我正在开发实时应用程序(聊天)并使用angular,我的后端是php(codeigniterrestapi)用于mongodb中的数据库我在某处听说socket.io是套接字的最佳库(实时使用),我看到socket.io主要与node.js 查看详情

通过 PHP 和 cURL 访问 NodeJS / Socket.io

....7)服务器来将数据推送到Web客户端。效果很好。为了扩展应用程序,我需要通过php触发/影响socket.io。我知道一个通​​过nodejshttp服务器通过http使用cUR 查看详情

WebSocketException上的Flutter Socket io错误:连接未升级到websocket

...描述】:我使用this包,它在测试网站上正常工作,但在应用程序中我得到了这个错误WebSocketExce 查看详情