php websocket转发到nodejs

Posted

技术标签:

【中文标题】php websocket转发到nodejs【英文标题】:php websocket forwarding to nodejs 【发布时间】:2018-09-07 10:38:37 【问题描述】:

我想在 php 中创建一个适配器,将消息从 javascript 客户端转发到 nodejs 服务器,反之亦然。

WebSockets:

nodejs 服务器:ws

php 服务器:RatchetPHP

php客户端:RatchetPawl

代码:

php 中的 websocket 服务器:chatWSServer.php

连接类:connection.php

javascript 客户端:

connection = new WebSocket('ws://localhost:9000');
connection.onmessage = (e) => 
    console.log(e.data);

connection.onopen = (e) => 
    console.log("connection established!");

connection.addEventListener('message', (resData) => 
    console.log("got message:", resData);
);

问题:

我尝试打开到 nodejs websocket 服务器的连接 (localhost:8889), 在 javscript 客户端连接到 php websocket 服务器(本地主机:9000): chatWSServer.php - createConnection() 及其工作, 但是当 javascript 客户端尝试发送消息时,我得到:

在“WebSocket”上执行“发送”失败:仍处于 CONNECTING 状态。

我认为这是因为棘轮棘爪连接器循环正在运行 - 当我评论时:loop->run() 客户端能够发送消息。

【问题讨论】:

【参考方案1】:

在@WyriHaximus 的帮助下,我设法解决了这个问题。

我创建了一个ratchetpawl websocket 客户端,其循环与ratchet websocket 服务器的循环相同。现在它是非阻塞的!

查看我的代码库以获取代码解决方案。

【讨论】:

以上是关于php websocket转发到nodejs的主要内容,如果未能解决你的问题,请参考以下文章

如何实现从 Redis 中订阅消息转发到 WebSocket 客户端

小程序WebSocket通过F5无法转发问题解决

如何配置 nginx 以将 websocket 转发到不同的进程

Nginx 作为 websockets 和 post 请求的转发代理

如何将 websocket 请求从 Apache httpd 转发到 Apache Tomcat?

将标准输出字节从 Process 转发到 WebSocket 或读取当前 InputStream 长度