PHP Websocket到节点/Sockjs

PHP Websocket到节点/Sockjs,php,node.js,Php,Node.js,我有一个带有SockJS的NodeJS服务器。客户端通过浏览器连接到节点服务器并创建websocket。问题是试图创建一个从php到节点的websocket 我正在使用处的文件作为在php中创建websocket的方法 服务器在端口9999上运行,并在浏览器中使用进行连接wss://nodejs.example.com:9999/sockjs/websocket. 服务器记录通过console.log进行的连接 因此,我将nodejs.example.com、9999、sockjs/websoc

我有一个带有SockJS的NodeJS服务器。客户端通过浏览器连接到节点服务器并创建websocket。问题是试图创建一个从php到节点的websocket

我正在使用处的文件作为在php中创建websocket的方法

服务器在端口9999上运行,并在浏览器中使用进行连接wss://nodejs.example.com:9999/sockjs/websocket. 服务器记录通过console.log进行的连接

因此,我将nodejs.example.com、9999、sockjs/websocket分别传递到host、port和path字段中

但是,节点服务器从未看到发出的get连接

(这背后的想法是服务器安装了一个沉重的php后端,通过让它告诉node何时向客户端发送数据,我们可以进行更多的实时交互并删除轮询,而无需进行全面切换)


TLDR:我希望能够从PHP向NodeJS/SockJS服务器发送消息

我能够为自己创建一个解决方案,它可能不适用于所有场景,但至少在这里可以工作。通过让节点服务器在另一个运行纯websocket的端口上承载一个额外的服务器,我可以使用该端口/服务器,而无需修改我正在使用的websocket客户端类。

我无意中发现了这个问题,我想做出贡献。我也有同样的问题。我通过使用Redis和Redis中使用的发布/订阅模式解决了这个问题

除了PHP和node.js服务器,您还可以安装Redis。Predis库()用于PHP,redis节点()用于node.js

示例代码:

PHP

node.js服务器上的Redis客户端

sockets
是来自SockJS的套接字连接

$redis = new Client();
$redis->publish('updates', Random::getUniqueString());
require('redis').createClient()

redis.subscribe('updates');

redis.on('message', function(channel, data) {
    for (var id in sockets) {
        if (sockets.hasOwnProperty(id)) {
            sockets[id].write(data);
        }
    }
});