개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.13 08:43

SwooleServer::send 관련 질문

목록
  • 해커랭크매니아 16시간 전 2025.08.13 08:43 새글
  • 9
    1
제가 SwooleServer::send를 사용하여 클라이언트로 데이터를 전송할 때, 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺는 것처럼 보입니다.

send 메서드를 사용할 때, 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺는 이유는 무엇이며, 어떻게 해야하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  16시간 전



    SwooleServer::send 메서드는 비동기 방식으로 데이터를 전송합니다. 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺는 이유는 TCP의 연결 지속性 때문입니다. TCP는 연결을 유지하고 데이터를 전송하는 방식으로, 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺는 것은 실제로 새로운 연결이 맺어지는 것이 아니라, 이전 연결이 유지되고 데이터가 전송되는 것입니다.

    클라이언트가 데이터를 받을 때마다 새로운 연결을 맺지 않도록 하려면, 클라이언트와 서버 간의 연결을 유지하는 방법을 사용해야 합니다. 예를 들어, WebSocket 프로토콜을 사용하는 방법이 있습니다. WebSocket은 클라이언트와 서버 간의 연결을 유지하고 데이터를 전송하는 방식으로, 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺지 않습니다.

    또한, SwooleServer::send 메서드를 사용할 때, `websocket` 옵션을 사용하여 WebSocket 프로토콜을 사용할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $serv->on('connect', function ($serv, $fd) {
    
        $serv->push($fd, 'Hello, ' . $serv->getClientInfo($fd)['address'] . ':' . $serv->getClientInfo($fd)['port']);
    
    });
    
    
    
    $serv->on('message', function ($serv, $fd, $from_id, $data) {
    
        $serv->push($fd, 'Received message: ' . $data);
    
    });
    
    
    
    $serv->on('close', function ($serv, $fd) {
    
        echo "Client $fd leftn";
    
    });
    
    
    
    $serv->start();
    
    


    이 예제에서는 WebSocket 프로토콜을 사용하여 클라이언트와 서버 간의 연결을 유지하고 데이터를 전송합니다. 클라이언트가 데이터를 받을 때마다 새로운 연결을 맺지 않습니다.

    2025-08-13 08:44

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 43,901건 / 1 페이지

검색

게시물 검색