- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想运行一个遍历生成器类的函数。只要 Ratchet 连接处于事件状态,生成器函数就会运行。我需要做的就是在执行 run
方法后实现这一点:
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/xxx/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8180,
'0.0.0.0'
);
$server->run();
这是我需要在服务器启动后运行的方法:
function generatorFunction()
{
$products = r\table("tableOne")->changes()->run($conn);
foreach ($products as $product) {
yield $product['new_val'];
}
}
以前我在 $server->run()
之前调用这个函数是这样的:
for ( $gen = generatorFunction(); $gen->valid(); $gen->next()) {
var_dump($gen->current());
}
$server->run();
但这不允许客户端与 Ratchet 服务器建立连接。我怀疑它永远不会出现在 $server->run()
中,因为正在迭代生成器类。
所以现在,我想先启动服务器,然后调用这个生成器方法,让它可以一直监听rethinkdb
中的变化。
我该怎么做?
最佳答案
让我们从例子开始:
<?php
require 'vendor/autoload.php';
class Chat implements \Ratchet\MessageComponentInterface {
function onOpen(\Ratchet\ConnectionInterface $conn) { echo "connected.\n"; }
function onClose(\Ratchet\ConnectionInterface $conn) {}
function onError(\Ratchet\ConnectionInterface $conn, \Exception $e) {}
function onMessage(\Ratchet\ConnectionInterface $from, $msg) {}
}
$loop = \React\EventLoop\Factory::create(); // create EventLoop best for given environment
$socket = new \React\Socket\Server('0.0.0.0:8180', $loop); // make a new socket to listen to (don't forget to change 'address:port' string)
$server = new \Ratchet\Server\IoServer(
/* same things that go into IoServer::factory */
new \Ratchet\Http\HttpServer(
new \Ratchet\WebSocket\WsServer(
new Chat() // dummy chat to test things out
)
),
/* our socket and loop objects */
$socket,
$loop
);
$loop->addPeriodicTimer(1, function (\React\EventLoop\Timer\Timer $timer) {
echo "echo from timer!\n";
});
$server->run();
要实现您需要的功能,您不必在$server->run()
之前 或之后 运行循环,但是它需要同时运行。
为此,您需要比 Ratchet 更深入 - ReactPHP 及其 EventLoop .如果您有权访问 loop interface然后添加一个计时器(执行一次)或一个周期性计时器(每第 n 秒)是小菜一碟。
关于php - 运行后如何使用 Ratchet\Server\IoServer 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338015/
我需要一起实时收听 2 个网络套接字 URL。我创建了 2 个连接到不同 URL 的连接,但我只看到了第一条消息结果。如何在没有关闭第一次连接的情况下从 wss://exalpme2 获取消息? 我的
我正在尝试根据 YouTube 中的教程创建基本的 websocket 聊天,但在运行时我在终端中遇到了这个错误 php bin/server.php Fatal error: Interface '
我正在尝试在 Ratchet 中使用 sessionProvider,以下是我的 shell 脚本: namespace App\Console\Commands; use Ratchet\S
我正在尝试在我的系统上设置 Ratchet 并关注了 socketo.me 我已经做了一切,直到安装 ZMQ 和 React/Zmq 并且一切都成功了。 但是当我尝试运行时 push-server.p
我正在为我的应用程序使用 PHP Ratchet(推送集成),并具有实时出价功能,它的工作原理非常棒。 由于高流量,我们将我们的应用程序移到 AWS 平台上,我们有多个应用程序服务器实例,其中一个(R
我正在使用 Ratchet 为群聊启用推送通知。 我决定做以下事情: 每当用户连接时,为他订阅他参与的所有群组主题以及个人消息主题。 我有一个数组 protected $subscribedTopic
我只是在学习 Ratchet(用于 PHP 实时聊天应用程序的库)。根据文档,以下函数将收到两件事: 消息来自谁和 信息。 然而,它错过了发送给谁。此功能将消息发送给所有连接的人。但我也想实现一对一聊
我使用 Ratchet php 创建了一个网络套接字连接。我连接了一个客户端,然后执行了一个查询(执行查询大约需要 20 秒),同时我尝试连接另一个客户端,我看到网络套接字连接处于挂起状态(仍在尝试切
我正在开发一个具有聊天功能的网站,当用户收到新消息时需要即时通知。我正在尝试决定是使用 Ratchet 服务器还是使用 AJAX 实现长轮询系统。我目前已经实现了一个基本的 Pub/Sub Ratch
我正在尝试使 Ratchet 推送教程起作用。 http://socketo.me/docs/push 我正在按照教程所说的做,但我的订阅者不会收到任何消息。 我的服务器.php getSocket(
我开始使用 PhP Ratchet 套接字。按照指南,我可以制作一个简单的聊天应用程序,它可以在同一台计算机上运行。例如,如果我打开chrome和firefox,我可以交互发送和接收消息,ok。 问题
我是尝试实现 Ratchet 的编程初学者。 这是我当前的文件结构 D:\Xampp composer.phar htdocs Ratchet composer.
在 documentation , 他们有: Item 2 问:这只是打字错误,还是他们出于某种原因将 table-view-cell 放入了两次? 最佳答案 前几天我注意到了同样的事情并打算调查..
我是网络套接字编程的新手。我正在 codeigniter 中实现 web socket 以实现简单的聊天功能,我的配置看起来像这样 $config['ratchet_client'] = array
最近一直在学习如何使用 Ratchet 在 PHP 中实现 websockets,但我不知道如何让它与按钮点击一起工作。 这是我当前的 JS/jQuery 代码: jQuery(documen
我有一个托管在 AZURE 平台上的 Ubuntu 服务器。 SSH 的 IP 是 52.XX.XX.XX,如果我这样做了 ifconfig 表明 eth0 Link encap:Ethernet
我目前正在为 UI 使用 Ratchet 框架,并且想知道如何在页面之间共享信息(例如用户输入的数据)。该网站似乎没有涵盖这一点,我似乎无法找到任何类型的教程。 最佳答案 您最好的选择是使用 HTML
我已经使用 Ratchet 集成了 pusher。向所有用户广播工作正常。 现在我试图找到一种方法,当我连接到特定用户时如何向特定用户发送消息。 在 subscribe 上执行的方法: public
在客户端: var ws = new WebSocket('ws://localhost:8082/chat?id=123&tid=7'); 在服务器端 class MyApp implements
我使用 Ratchet 作为一些基于浏览器的游戏的套接字服务器,我注意到一个非常奇怪的行为。 我的应用程序类实现了 WampServerInterface,我注意到在 4-5 个客户端连接和断开连接(
我是一名优秀的程序员,十分优秀!