현재 위치: > 최신 기사 목록> YII2는 Workerman과 통합하여 WebSocket 커뮤니케이션을 구현합니다.

YII2는 Workerman과 통합하여 WebSocket 커뮤니케이션을 구현합니다.

gitbox 2025-07-15

YII2는 Workerman과 통합되어 WebSocket 커뮤니케이션을 구현합니다

YII2는 강력한 PHP 프레임 워크이며 Workerman은 비동기식을 지원하는 고성능 PHP 소켓 프레임 워크입니다. 이 두 프레임 워크를 조합하면 개발자가 WebSocket 커뮤니케이션 기능을 신속하게 구현하는 데 도움이 될 수 있습니다. 이 기사는 예제를 사용하여 YII2의 Workerman을 통합하여 WebSocket 커뮤니케이션을 구현하는 방법을 설명합니다.

yii2를 설치하십시오

먼저 YII2 프레임 워크를 설치해야합니다. Composer를 사용하여 다음 명령으로 YII2를 설치할 수 있습니다.

 composer create-project --prefer-dist yiisoft/yii2-app-basic basic

이 명령은 현재 디렉토리에서 BASIC이라는 YII2 응용 프로그램을 만듭니다.

Workerman을 설치하십시오

다음으로 Workerman을 설치해야합니다. 작곡가를 사용하여 빠르게 설치할 수 있습니다.

 composer require workerman/workerman

설치가 완료되면 Worker.php라는 파일을 작성하여 Workerman 서비스를 시작해야합니다. 다음은 샘플 코드입니다.

 // worker.php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker('websocket://0.0.0.0:8080');
$worker->onMessage = function($connection, $data) {
    // 수신 된 메시지를 처리하십시오
    $message = 'Received: ' . $data;
    // 고객에게 메시지를 보냅니다
    $connection->send($message);
};
Worker::runAll();

위의 코드는 Port 8080에 듣는 WebSocket 서버를 생성합니다. 메시지가 수신되면 메시지가 클라이언트에게 손상되지 않습니다.

yii2 컨트롤러를 만들고 뷰를 만듭니다

다음으로 YII2 응용 프로그램에서는 WebSocket 요청을 처리 할 컨트롤러를 작성해야합니다. 다음은 WebSocket 컨트롤러의 코드입니다.

 // WebSocketController.php
namespace app\controllers;
use yii\web\Controller;
class WebSocketController extends Controller
{
    public $enableCsrfValidation = false;
    public function actionIndex()
    {
        // awebsocket연결하다
        $connection = new \Workerman\Connection\TcpConnection('websocket://127.0.0.1:8080');
        $connection->onMessage = function($connection, $message) {
            // 수신 된 메시지를 처리하십시오
            $message = 'Received: ' . $message;
            // 고객에게 메시지를 보냅니다
            $connection->send($message);
        };
        // 시작websocket연결하다
        $connection->connect();
    }
}

이 컨트롤러에서는 Workerman의 TCPConnection을 사용하여 WebSocket 연결을 생성하고 메시지를 수신 한 후 리턴하는 메시지 콜백 함수를 정의합니다.

다음으로보기 파일에서 버튼을 만들고 클릭하고 서버로 메시지를 보낼 수 있습니다.

 <?php
use yii\helpers\Html;
?>
<h1>WebSocket Example</h1>
<button id="sendButton">Send Message</button>
<script>
$(document).ready(function() {
    $('#sendButton').click(function() {
        var message = "Hello, server!";
        // 서버에 메시지를 보냅니다
        websocket.send(message);
    });
});
</script>

이 코드에서는 jQuery를 사용하여 버튼의 클릭 이벤트를 바인딩하고 사용자가 버튼을 클릭하면 WebSocket 서버로 메시지를 보냅니다.

라우팅을 구성하십시오

YII2 응용 프로그램이 WebSocket 컨트롤러에 올바르게 액세스하려면 구성 파일에서 경로를 설정해야합니다. YII2 응용 프로그램의 구성 파일에서 구성 요소 배열을 찾아 다음을 추가하십시오.

 'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        // 추가websocket라우팅
        '/websocket' => 'websocket/index'
    ],
],

위 구성을 통해 /WebSocket Route는 이전에 만든 WebSocket 컨트롤러를 가리 킵니다.

요약

이 기사의 설명을 통해 Workerman을 결합하여 YII2 프레임 워크에서 WebSocket 커뮤니케이션 기능을 구현하는 방법을 배웠습니다. 먼저 Composer를 통해 YII2 및 Workerman 프레임 워크를 설치했습니다. 그런 다음 WebSocket 연결을 처리하기 위해 작업자 서비스를 만들었습니다. 그런 다음 YII2 응용 프로그램에서 컨트롤러와보기를 설정하고 라우팅을 구성하여 WebSocket 기능에 대한 액세스를 달성했습니다.

이 예를 들어, Workerman을 YII2 응용 프로그램에 쉽게 통합하여 응용 프로그램에 실시간 커뮤니케이션 기능을 추가하고 사용자 경험을 향상시킬 수 있습니다.