
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