问题标签 [ratchet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1645 浏览

php - 如何在 Ratchet websocket 中获取 nginx-key X-Real-IP 的代理值

我正在使用棘轮 websockets 设置 websocket 应用程序。我的设置如下:我(必须)使用 nginx 服务器作为反向代理将请求转发到我的 websocket 棘轮服务器:

在我的 websocket 应用程序中,我需要获取 X-Real-IP 的值 ($remote_addr) 以进行 IP 过滤。因为我必须使用这个代理解决方案,所以在使用函数 stream_socket_get_name 时,我总是将 ip 127.0.0.1 作为远程 ip。

据我调查这个问题棘轮启动一个stream_socket_server,然后开始监听传入的连接。这些连接已经是流,而不是 http-requests,所以我无法使用 $_SERVER 之类的东西。

有人知道如何检索这个值吗?

问候

马库斯

0 投票
2 回答
2557 浏览

php - 使用 stunnel 和 Ratchet 保护 websocket。连接已关闭

我有一个使用 Ratchet 和 ZeroMQ 的有效 websockets 解决方案,如他们的推送集成文档中所述。我遇到的问题是生产应用程序是通过 SSL 提供的,当通过安全网站请求时,不安全的 websocket 在 Firefox 中不起作用。这个问题是众所周知的,有两个建议是使用 stunnel,或者使用 nginx 作为 Web 服务器。我不能使用 nginx,所以我唯一的选择是 stunnel,但客户端无法连接。

这是我的隧道配置:

Ratchet 配置为在 8080 中侦听:

客户端正在尝试连接,wss://server.ip:8079但是没有客户端可以连接,一旦发出请求,它们就会断开连接。

有任何想法吗?

0 投票
1 回答
629 浏览

php - 使用 BrainSocket for Laravel 获取连接 ID

希望是一个简单的问题,我只是瞎了眼:我正在通过 BrainBoxLabs 实现BrainSocket(Laravel 的 websocket 处理程序,显然使用 Ratchet)。一切都很好,但我似乎无法弄清楚如何访问连接 ID(在两端,但主要是服务器端)。

显然它必须被跟踪,并且当客户端向服务器发送消息时,服务器日志会显示连接 ID,但是 GitHub 存储库上的文档是有限的,我没有看到让我访问它的命令。我想从更广泛的意义上说,我看不到如何使用 BS 来触发只有特定连接才能看到的事件。

0 投票
2 回答
4401 浏览

javascript - 带有棘轮的 PHP WebSockets - 示例不起作用

这里先介绍一些背景。

  1. 我的目标是使用 Ratchet WebSockets 创建双向客户端-服务器通信。

  2. 我已经安装了棘轮和随附的软件,如此所述。

  3. 我已经成功地创建了一个 Hello World 应用程序,如此所述。

  4. 现在我正在尝试使用教程创建推送功能。我已经复制了代码,稍作修改(在下面的代码注释中注明了修改),安装了 ZMQ 库(最新版本,将其添加到 php.ini,显示在php -m- 简而言之,它已正确安装)。但是 WebSocket 不起作用。

我将在下面提供我的测试过程以及指向我的域的真实链接,以便您自己检查。

  1. 我的推送服务器和他们教程中的一模一样,只是将 IP 更改为我服务器的 IP。我通过 SSH 运行它,它似乎连接正确。

  2. 我的 Pusher 类位于 MyApp 命名空间中,与他们的教程中的代码和相对位置相同。

  3. 我的 post.php 稍作修改,因为无需担心 MySQL 查询:

该文件位于此处

  1. 我的 client.php 与他们的相同,除了我必须为 IE 添加一些修复以使用when.js. 我的问题与浏览器无关,与添加修复程序之前的问题相同。

该文件位于此处

理论上,应该发生什么(例如):我在​​打开client.php控制台的情况下在 Chrome 中打开;然后我post.php在 Firefox 中打开;Chrome 的控制台应显示消息“新文章已发布...”等(来自 中的conn.subscribe函数client.php)。但是,当我这样做时,什么也没有发生。push-server.php连接保持打开状态(在我通过 SSH关闭之前不显示“连接关闭”错误)。控制台仍然是空的。

我认为这是过去几天的所有相关信息,其中很大一部分我都花在了试图弄清楚这一点上。但是,我什至无法确定问题出在代码上还是与我可能不知道的某些服务器配置设置有关。所以,我来找你,希望有人能指出我正确的方向。

重要编辑

我很确定问题在于 Autobahn.js 方法conn.subscribe无法正常工作。正在建立连接。当我将代码更改为:

然后Connection established正确显示在控制台中。所以我相信我们需要对订阅方法进行故障排除。如果有人可以向我解释它是如何工作的,以及“主题”和“数据”到底应该是什么,那将有很大帮助。Autobahn 文档使用 URL 作为此方法的参数(请参阅此处)。

0 投票
1 回答
9407 浏览

facebook - 如何制作像facebook这样的实时通知?

我正在尝试像 facebook 一样进行实时通知。在学习和搜索了很多之后,我很困惑,请解释一下什么是对的,什么是错的..


请确保该网站可能拥有与 Facebook 相同数量的用户

  • 我们可以通过长轮询进行实时通知吗?如果是,有什么优点、缺点和限制。
  • 我们是否可以使用 websockets 进行实时通知?请注意用户数量可以与 facebook 相同。如果是,有什么优点、缺点和限制。
  • 如果有其他方法请说明。

混乱

我在网络上学到了多远,发现这Websocket很好,但是打开连接的数量有一个限制(最大 5K),这意味着一次最大用户数只有 5K,这比 facebook 的用户数要少得多。 .如果我错了,请解释。

0 投票
1 回答
2750 浏览

php - PHP WebSocket ZMQ - 聊天操作 - 向特定用户发送数据

我正在开发一个基于 Symfony 2.2.11 的 PHP 项目,我安装了与以下教程http://socketo.me/docs/install相关的 socketo,以使我的聊天脚本正常工作。

ServerCommand.php // 启动 WebSocket 服务器的命令行代码

将消息添加到数据库后: MessagesController.php

聊天服务: Chat.php

接收数据的 JS 代码: messages.html.twig

所以一切工作完美,当我发送一条新消息时,它会转到数据库,然后它会降落在聊天页面上。

问题: 数据落在JS脚本的任何地方,结果是所有用户都可以得到相同的记录消息

问: 我怎样才能使数据登陆特定的用户页面?

谢谢

0 投票
2 回答
3957 浏览

php - 使用 Ratchet for PHP 通过 WebSocket 流式传输二进制数据

我已经在 Windows/IIS 上使用 Ratchet for PHP 成功设置了 WebSocket 服务器。我使用了 Ratchet 的可用 WAMP(WebSocket 应用程序消息传递协议)设置,这样我就有了 Pub/Sub 和 RPC 功能。这对于聊天或简单更新等小事非常有用。我很好奇的是如何将原始二进制数据(如音频/视频)流式传输给目标受众(1 人或更多人)......

服务器:
- Windows 7(64 位)/Windows 2008 Server Enterprise(64 位)
- PHP 5.4.x
- Ratchet(WebSocket 服务器)http://socketo.me/docs/wamp

客户端设置:
- Autobahn |JS http://autobahn.ws/js/
- when.js https://github.com/cujojs/when

是否有使用我的设置的解决方案允许我将二进制数据流式传输到目标受众?提前致谢!

0 投票
2 回答
2335 浏览

php - Autobahn.js - 如何在订阅时传递数据

我正在使用 Ratchet 和 Autobahn.js。我想在订阅时进行一些用户验证,所以我需要将会话密钥传递给 Ratchet WAMP 服务器。你能告诉我如何在订阅事件中将一些数据传递给服务器吗?

0 投票
2 回答
3269 浏览

php - 关闭 Ratchet IOServer

有没有终止的IOServer方法loop

我正在使用 WebSockets 作为一个骇人听闻的应用程序间通信系统(相信我,如果我可以使用其他任何东西,我会),但我无法跳出循环并在run()调用IOServer.

我需要子类化IOServer还是TerminatableIOServer这个功能已经存在?

0 投票
1 回答
1735 浏览

php - ZMQ 挂起 - ZMQSocket::send

我一直在用 Ratchet 测试 PHP websockets,一切正常,直到 ZMQSocket::send 突然开始无缘无故挂起。

请注意,我可以使用 ZMQ::MODE_NOBLOCK,这将停止挂起,但不能解决问题。即客户端仍然没有收到任何东西。我也重新启动了我的盒子,但这并不能解决问题。

  • Ubuntu 12.04.1 LTS
  • PHP 版本 5.3.10 - FPM/(& 推送服务器的 CLI)
  • ZMQ 扩展版本 1.1.2
  • libzmq 版本 2.1.11

更新:我似乎通过将代码更改为:

现在的问题是,为什么它一开始就挂了,当它正常工作大约一两个小时的时候?有什么需要我注意的吗?