gpt4 book ai didi

PHP React\ZMQ\Context 'ON' 方法未触发

转载 作者:行者123 更新时间:2023-12-04 16:13:11 28 4
gpt4 key购买 nike

我正在尝试使用 php 实现一个网络套接字服务器。

我已按照 ratchet 中的说明进行操作.但我无法将更改推送到客户端。我知道问题是“React\ZMQ\Context ”,它对任何事件都没有反应。

正如我所料,这个组件应该对 open 使用react, close , messageerror事件。这是我的代码:

$loop   = React\EventLoop\Factory::create();
$pusher = new MyApp\Pusher;

// Listen for the web server to make a ZeroMQ push after an ajax request
$context = new React\ZMQ\Context( $loop );
$pull = $context->getSocket( ZMQ::SOCKET_PULL );
$pull->bind( 'tcp://127.0.0.1:9021' ); // Binding to 127.0.0.1 means the only client that can connect is itself
$pull->on( 'open', function( $msg ){ echo "open"; } );
$pull->on( 'close', function( $msg ){ echo "close"; } );
$pull->on( 'message', function( $msg ){ echo "message"; } );
$pull->on( 'error', function( $msg ){ echo "error"; } );

// Set up our WebSocket server for clients wanting real-time updates
$webSock = new React\Socket\Server( '0.0.0.0:8090', $loop ); // Binding to 0.0.0.0 means remotes can connect
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
$webSock
);
$loop->run();

谢谢。

最佳答案

这将不起作用,除非您还修改了 PUSH ZeroMQ 基础设施设置的一面:

<?php
// post.php ???
// This all was here before ;)
$entryData = array(
'category' => $_POST['category']
, 'title' => $_POST['title']
, 'article' => $_POST['article']
, 'when' => time()
);

$pdo->prepare( "INSERT INTO blogs (title, article, category, published) VALUES (?, ?, ?, ?)" )
->execute( $entryData['title'], $entryData['article'], $entryData['category'], $entryData['when'] );


// This is our new stuff
$context = new ZMQContext();
$socket = $context->getSocket( ZMQ::SOCKET_PUSH, 'my pusher' );
$socket->connect( "tcp://localhost:5555" );
// ^^^^__________ MUST BECOME 9021 after your mod-s
$socket->send( json_encode( $entryData ) );

如果这不起作用,请检查所有错误状态,根据记录的 ZeroMQ native API 服务提供(实际代码取决于您的 native API 语言包装器/绑定(bind))。

对于另一个级别的测试,可能有一组轻量级的测试来在 python 中设置一个简单的环境:
import     zmq
aClk = zmq.Stopwatch()
aContext = zmq.Context()

aTarget = "tcp://127.0.0.1:9021" # <- ADJUST TO PULL-er side transport-class endpoint

aPushToProveZMQ_RTO = aContext.Socket( zmq.PUSH )
aPushToProveZMQ_RTO.setsockopt( zmq.LINGER, 0 )
aPushToProveZMQ_RTO.connect( aTarget )

aClk.start()

try:
print( "INF: infinite loop, sending messages [[[ Use Ctrl+C to break ]]]" )
while True:
aPushToProveZMQ_RTO.send( "aLoop RTT::({0:}[us])".format( aClk.stop() ) )
pass; aClk.start()

except:
pass

finally:
aPushToProveZMQ_RTO.close()
aContext.term()

print( "INF: a gracefull exit" )

关于PHP React\ZMQ\Context 'ON' 方法未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50855231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com