Home Backend Development PHP Tutorial PHP Websocket development guide to implement real-time traffic information query function

PHP Websocket development guide to implement real-time traffic information query function

Dec 04, 2023 am 10:30 AM
php websocket Real-time query

PHP Websocket开发指南,实现实时交通信息查询功能

PHP Websocket Development Guide to realize real-time traffic information query function

  1. Preface
    Websocket is a technology that realizes two-way communication on the Web. It can update data in real time and is suitable for scenarios that require real-time interaction. This article will introduce how to use PHP to develop a real-time traffic information query function and provide corresponding code examples.
  2. Preparation
    Before starting development, you need to prepare the following work:
  3. A host with PHP and Apache servers installed, and basic PHP programming knowledge
  4. A browser that supports Websocket, such as Chrome, Firefox, etc.
  5. Install Composer to install related dependent libraries
  6. Start development
    3.1 Install Websocket dependent libraries
    Pass Composer installs the Ratchet library, which is a popular choice for developing Websocket applications in PHP. You can install it by running the following command in the terminal:

    composer require cboden/ratchet
    Copy after login

3.2 Create a Websocket server
In the project root Create a server.php file in the directory and add the following code:

<?php
require 'vendor/autoload.php';

use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new TrafficInfo()
        )
    ),
    8080 // 服务器端口号
);

$server->run();
Copy after login

This code creates a Websocket server and listens to port 8080. Among them, TrafficInfo is the Websocket application class we will create.

3.3 Create Websocket application class
Create a TrafficInfo.php file in the project root directory and add the following code:

<?php
use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

class TrafficInfo implements MessageComponentInterface
{
    private $connections;

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

    public function onOpen(ConnectionInterface $conn)
    {
        // 当一个新的连接建立时触发
        $this->connections->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg)
    {
        // 当接收到客户端发送的消息时触发
        // 在这里处理相应的逻辑,并将数据发送给所有连接的客户端
        $this->broadcast($msg);
    }

    public function onClose(ConnectionInterface $conn)
    {
        // 当一个客户端连接关闭时触发
        $this->connections->detach($conn);
    }

    public function onError(ConnectionInterface $conn, Exception $e)
    {
        // 当发生错误时触发
        $conn->send($e->getMessage());
        $conn->close();
    }

    private function broadcast($msg)
    {
        foreach ($this->connections as $conn) {
            $conn->send($msg);
        }
    }
}
Copy after login

This code defines a TrafficInfo class, and implements the MessageComponentInterface interface. In this class, we override methods such as onOpen, onMessage, onClose, and onError to handle interactions with the client. , and implements a broadcast method for sending data to all connected clients.

  1. Client code
    Create a index.html file in the project root directory and add the following code:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Traffic Info</title>
</head>
<body>
    <h1>Traffic Info</h1>

    <div id="traffic-info"></div>

    <script>
        var socket = new WebSocket('ws://localhost:8080');

        socket.onmessage = function (event) {
            var data = JSON.parse(event.data);
            // 处理接收到的实时交通信息
            document.getElementById('traffic-info').innerHTML = data.message;
        };

        socket.onclose = function () {
            // 服务器连接关闭时触发
            console.log('Connection closed');
        };
    </script>
</body>
</html>
Copy after login

This paragraph The code creates a Websocket connection and listens for messages from the server. When a message is received, the data is parsed into JSON format and real-time traffic information is displayed on the page.

  1. Run the program
    Place the above files in the root directory of the Apache server, and use the command line to enter the project root directory, and run the following command to start the Websocket server:

    php server.php
    Copy after login

Open the index.html file in your browser to receive real-time traffic information in real time.

So far, we have completed a real-time traffic information query function developed using PHP, and realized real-time two-way communication between the server and the client through Websocket. You can further develop and optimize according to your own needs.

Summary
This article introduces the process of developing real-time traffic information query function using PHP and provides corresponding code examples. Websocket technology performs well in realizing real-time data updates and interactions, and can meet many real-time communication needs. I hope this article can be helpful to you, thank you for reading!

The above is the detailed content of PHP Websocket development guide to implement real-time traffic information query function. For more information, please follow other related articles on the PHP Chinese website!

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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

In this chapter, we will understand the Environment Variables, General Configuration, Database Configuration and Email Configuration in CakePHP.

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

In this chapter, we are going to learn the following topics related to routing ?

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

See all articles