Home > Backend Development > PHP Tutorial > Develop real-time monitoring system using php and Websocket

Develop real-time monitoring system using php and Websocket

WBOY
Release: 2023-12-02 09:06:01
Original
932 people have browsed it

Develop real-time monitoring system using php and Websocket

Using PHP and WebSocket to develop a real-time monitoring system

With the rapid development of the Internet and the widespread application of smart devices, real-time monitoring systems play an important role in various fields. Role. Whether it is industrial control, traffic management or environmental monitoring, real-time monitoring systems can provide timely and reliable data and feedback to help people make accurate decisions. This article will introduce how to use PHP and WebSocket technology to develop a simple real-time monitoring system and provide specific code examples.

In order to start our development process, we first need to understand the basic concepts and principles of WebSocket technology. WebSocket is a full-duplex communication protocol based on the HTTP protocol. It realizes real-time data transmission between the server and the client by establishing a persistent connection. Compared with the traditional HTTP request-response model, WebSocket is more efficient and real-time, and is suitable for scenarios that require frequent communication.

In PHP, we can use Ratchet, a mature WebSocket library, to implement the WebSocket server. First, we need to use Composer to install the Ratchet library. Execute the following command in the command line:

composer require cboden/ratchet
Copy after login

After installation, we can write a simple WebSocket server to monitor client connections and push data in real time.

<?php

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

require 'vendor/autoload.php';

class MyWebSocketServer implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New client connected ({$conn->resourceId})" . PHP_EOL;
    }

    public function onMessage(ConnectionInterface $from, $message) {
        foreach ($this->clients as $client) {
            if ($client !== $from) {
                $client->send($message);
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Client disconnected ({$conn->resourceId})" . PHP_EOL;
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        echo "An error occurred: {$e->getMessage()}" . PHP_EOL;

        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new MyWebSocketServer()
        )
    ),
    9000
);

echo "WebSocket server started" . PHP_EOL;

$server->run();
Copy after login

In the above code, we define a class named MyWebSocketServer, which implements the MessageComponentInterface interface provided by Ratchet. This interface contains some necessary methods, such as onOpen, onMessage, onClose and onError, which are used to handle client connections, message reception, connection closing and error handling respectively.

In the onOpen method, we add the newly connected client to a client list. In the onMessage method, we iterate through the client list and send messages to other clients except the message sender. In the onClose method, we remove the closed connection from the client list. Finally, in the onError method, we handle the exception and close the connection.

In order to start the WebSocket server, we use the IoServer factory class provided by Ratchet. By specifying the HTTP server, WebSocket server, and the MyWebSocketServer instance we defined, we can create a WebSocket server and listen on the specified port (9000 in this example).

On the client, we can use JavaScript to create a WebSocket connection and perform real-time data transmission and reception. The following is a simple example:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Client</title>
</head>
<body>
    <script>
        var socket = new WebSocket("ws://localhost:9000");

        socket.onopen = function() {
            console.log("WebSocket connection established");
        };

        socket.onmessage = function(event) {
            var message = event.data;
            console.log("Received message: " + message);
        };

        socket.onclose = function() {
            console.log("WebSocket connection closed");
        };

        socket.onerror = function(event) {
            console.log("An error occurred: " + event.data);
        };
    </script>
</body>
</html>
Copy after login

In the above code, we use JavaScript to create a WebSocket object named socket and specify the connection address to the WebSocket server we created previously. By listening to onopen, onmessage, onclose and onerror events, we can perceive changes in the connection status in real time and receive messages sent by the server.

Through the above PHP and WebSocket code examples, we can develop a more complex real-time monitoring system based on this simple implementation. You can write business logic according to specific needs, such as sensor data collection, status updating, real-time data display, etc. Using PHP and WebSocket technology, we can implement a high-performance, real-time and reliable monitoring system to provide solutions for real-time monitoring needs in various fields.

The above is the detailed content of Develop real-time monitoring system using php and Websocket. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template