>  기사  >  PHP 프레임워크  >  WorkerMan Connection 클래스 사용(코드 포함)

WorkerMan Connection 클래스 사용(코드 포함)

尚
앞으로
2019-11-26 15:18:252970검색

다음 칼럼에서는 workerman tutorial 칼럼에서 WorkerMan Connection 클래스의 사용법을 모두에게 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

WorkerMan Connection 클래스 사용(코드 포함)

1. TcpConnection 클래스 사용

1. 간단한 TCP 테스트#🎜 🎜 #

Server.php

<?php
require_once __DIR__.&#39;/Workerman/Autoloader.php&#39;;
use Workerman\Worker;
$worker = new Worker(&#39;websocket://0.0.0.0:80&#39;);// 连接回调
$worker->onConnect = function ($connection){
     echo "connection success\n";
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
    $conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
    echo "connection close \n";
};
$worker::runAll();

테스트 결과:

WorkerMan Connection 클래스 사용(코드 포함)

서버 출력:

# 🎜🎜 #

WorkerMan Connection 클래스 사용(코드 포함)다음 오류는 내부 연결 프로토콜이 수정되지 않았음을 나타냅니다.

www@iZ23s8agtagZ:~$ telnet 127.0.0.1 8085
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is &#39;^]&#39;.
^[[A^[[A
HTTP/1.1 400 Bad Request

<b>400 Bad Request</b><br>Invalid handshake data for websocket. <br> See <a href="http://wiki.workerman.net/Error1">http://wiki.workerman.net/Error1</a> for detail.Connection closed by foreign host.

2. 흑백 목록에 대한 액세스

Server.php

<?php
require_once __DIR__.&#39;/Workerman/Autoloader.php&#39;;
use Workerman\Worker;
$worker = new Worker(&#39;tcp://0.0.0.0:8085&#39;);
// 连接回调
$worker->onConnect = function ($connection){
    // IP 白名单验证
    if($connection->getRemoteIP() != &#39;127.0.0.1&#39;){
        $connection->close("IP Address Forbidden");
    }
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
    $conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
    echo "connection close \n";
};
$worker::runAll();

Workerman 서비스 열기

#🎜 🎜#

올바른 액세스: WorkerMan Connection 클래스 사용(코드 포함)

WorkerMan Connection 클래스 사용(코드 포함)

비로컬 주소 액세스 : # 🎜🎜#WorkerMan Connection 클래스 사용(코드 포함)

2. AsyncTcpConnection 클래스 사용WorkerMan Connection 클래스 사용(코드 포함)

Server.php

<?php
require_once __DIR__.&#39;/Workerman/Autoloader.php&#39;;
use Workerman\Worker;
$worker = new Worker(&#39;websocket://0.0.0.0:443&#39;);
// Workerman 启动的回调,这里传递的是Worker对象
$worker->onWorkerStart = function ($worker){
    echo "onWorkerStart success";
};
// 连接回调
$worker->onConnect = function ($connection){
    $connection_baidu = new \Workerman\Connection\AsyncTcpConnection(&#39;tcp://www.baidu.com:443&#39;);
    // 百度的数据发送给浏览器。返回数据后,使用的数据要use 进来,
    $connection_baidu->onMessage = function ($connection_baidu,$data) use ($connection){
        $connection->send($data);
    };
    // 浏览器接受的数据发送给百度
    $connection->onMessage = function ($connection,$data) use ($connection_baidu){
        $connection_baidu->send($data);
    };
    $connection_baidu->connect();
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
    $conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
    echo "connection close \n";
};

//Workerman 停止回调
$worker->onWorkerStop = function ($worker){
    echo "onWorkerStop success";
};
$worker::runAll();
# 🎜🎜#WorkerMan 관련 기사를 더 보려면 WorkerMan 사용 튜토리얼

열을 주목해 주세요.

위 내용은 WorkerMan Connection 클래스 사용(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제