Home > Article > PHP Framework > How to implement a WebSocket server using Swoole
WebSocket has become an essential element in modern web applications. It provides a full-duplex communication method that enables real-time communication between the server and the client. Swoole is a high-performance network communication framework based on PHP, which can easily implement WebSocket servers.
This article will introduce how to use Swoole to build a WebSocket server.
In order to install Swoole, you need to use PECL (PHP Extension Community Library). Open a terminal and enter the following command:
pecl install swoole
Once the installation is complete, the Swoole extension will be automatically loaded into the PHP extension list.
The easiest way to create a WebSocket server is by using Swoole's WebSocket server class:
$server = new SwooleWebsocketServer("127.0.0.1", 9501); $server->on('open', function (SwooleWebsocketServer $server, $request) { echo "Client {$request->fd} connected "; }); $server->on('message', function (SwooleWebsocketServer $server, $frame) { echo "Received message: {$frame->data} "; // Broadcast message to all connected clients foreach ($server->connections as $fd) { $server->push($fd, $frame->data); } }); $server->on('close', function (SwooleWebsocketServer $server, $fd) { echo "Client {$fd} disconnected "; }); $server->start();
This example creates a local WebSocket server and connects it to Set to listen on port 9501. It also adds three callback functions:
open
- will be called when a new WebSocket client connects to the server. message
- Will be called when the server receives a message from the client. close
- Will be called when the client disconnects. In the open
function, we output a simple message to the console, prompting us that a new client has been connected.
In the message
function, we output the received message to the console and broadcast this message to all connected clients.
In the close
function, we output a message to the console indicating the fd of the disconnected client.
Finally, we start the WebSocket server by calling the start
method.
To test the WebSocket server, you can write a simple client using JavaScript's WebSocket API. Here is a very simple example:
// Connect to WebSocket server const ws = new WebSocket('ws://127.0.0.1:9501'); // Send a message to the server ws.onopen = function() { ws.send('Hello, server!'); }; // Receive a message from the server ws.onmessage = function(event) { console.log('Received message:', event.data); };
In this example, we create a WebSocket object and connect to the WebSocket server we just created. We also define two callback functions:
onopen
- will be called when the WebSocket connection is successfully established. Here we send a message to the server. onmessage
- Will be called when WebSocket receives a message from the server. To test this client, simply open the console in your browser and copy and paste the code into the console.
In addition to the functions demonstrated in this example, Swoole also provides many other useful functions. For example, you can push a message to the client by calling the push
method. Additionally, you can use coroutines to implement asynchronous programming.
In short, Swoole is very suitable for building WebSocket servers. It provides many useful features that make developing real-time web applications very easy.
The above is the detailed content of How to implement a WebSocket server using Swoole. For more information, please follow other related articles on the PHP Chinese website!