您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman类AsyncTcpConnection的__construct方法实现异步访问外部websocket服务,并设置以哪个本地ip及端口访问
发布时间:2021-12-03 21:53:14编辑:雪饮阅读()
为了方便测试,直接在同台服务器内部实现访问端与被访问端。
访问端实例:
<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function($worker){
// 设置访问对方主机的本地ip及端口(每个socket连接都会占用一个本地端口)
$context_option = array(
'socket' => array(
// ip必须是本机网卡ip,并且能访问对方主机,否则无效
'bindto' => '127.0.0.1:2333',
),
);
$con = new AsyncTcpConnection('ws://127.0.0.1:8484', $context_option);
$con->onConnect = function(AsyncTcpConnection $con) {
$con->send('hello');
};
$con->onMessage = function(AsyncTcpConnection $con, $data) {
echo $data;
};
$con->connect();
};
Worker::runAll();
?>
被访问端实例;
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send("websocket服务端已收到!");
};
// 运行worker
Worker::runAll();
?>
被访问端启动:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test2.php start
Workerman[test2.php] start in DEBUG mode
------------------------------------------- WORKERMAN --------------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------------- WORKERS ---------------------------------------------
proto user worker listen processes status
tcp root none websocket://0.0.0.0:8484 1 [OK]
--------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
访问端开始访问:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
websocket服务端已收到!
关键字词:websocket,AsyncTcpConnection,workerman,__construct