Gunakan php untuk membangunkan Websocket untuk mencipta fungsi ramalan cuaca masa nyata

王林
Lepaskan: 2023-12-18 10:14:02
asal
1239 orang telah melayarinya

Gunakan php untuk membangunkan Websocket untuk mencipta fungsi ramalan cuaca masa nyata

Gunakan PHP untuk membangunkan WebSocket untuk mencipta fungsi ramalan cuaca masa nyata

Kata Pengantar
WebSocket ialah protokol komunikasi rangkaian yang boleh mewujudkan sambungan berterusan antara pelanggan dan pelayan untuk mencapai komunikasi masa nyata dua hala. Dalam pembangunan Web, WebSocket digunakan secara meluas dalam senario seperti sembang segera, tolak masa nyata dan kemas kini data masa nyata. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan WebSocket untuk melaksanakan fungsi ramalan cuaca masa nyata.

Langkah 1: Buat pelayan WebSocket
Pertama, kita perlu mencipta pelayan WebSocket untuk mengendalikan sambungan pelanggan dan penghantaran mesej. Dalam PHP, anda boleh menggunakan perpustakaan Ratchet untuk melaksanakan fungsi pelayan WebSocket.

  1. Pertama, pastikan Komposer dipasang ialah alat pengurusan pergantungan untuk PHP.
  2. Buat projek PHP baharu dan dalam direktori projek, cipta fail composer.json baharu dan tambah kandungan berikut:
{ "require": { "cboden/ratchet": "^0.4" } }
Salin selepas log masuk
  1. Dalam direktori projek, laksanakan arahancomposer installuntuk memasang perpustakaan Ratchet.
  2. Buat fail PHP baharu bernama server.php untuk melaksanakan logik utama pelayan WebSocket. Contoh kod adalah seperti berikut:
run();
Salin selepas log masuk

Dalam kod di atas, kami mencipta kelas bernama WeatherForecast, yang melaksanakan antara muka MessageComponentInterface Ratchet, yang mengandungi pelbagai kaedah pemprosesan acara pelayan WebSocket, seperti onOpen, onClose, onMessage wait. Kita boleh menulis logik khusus dalam kaedah ini untuk mengendalikan sambungan pelanggan, pemotongan dan penghantaran mesej.

Dalam kelas WeatherForecast, kami juga mentakrifkan kaedah broadcastMessage untuk menyiarkan mesej kepada semua pelanggan yang disambungkan.

Akhir sekali, sambungkan tiga objek HttpServer, WsServer dan WeatherForecast bersama-sama melalui kaedah kilang IoServer, dan nyatakan nombor port pelayan sebagai 8080.

Langkah 2: Akses API ramalan cuaca
Seterusnya, kami perlu mendapatkan data ramalan cuaca masa nyata dan menghantarnya kepada pelanggan yang disambungkan. Dalam artikel ini, kami menggunakan API ramalan cuaca awam, tetapi anda juga boleh memilih API lain berdasarkan keperluan sebenar.

Dalam kaedah onOpen kelas WeatherForecast, kami boleh memulakan permintaan HTTP untuk mendapatkan data ramalan cuaca. Contoh kod adalah seperti berikut:

public function onOpen(ConnectionInterface $conn) { $url = 'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Beijing'; $response = file_get_contents($url); $data = json_decode($response, true); // 处理天气预报数据,比如将数据发送给客户端 }
Salin selepas log masuk

Antaranya, YOUR_API_KEY perlu diganti dengan API Key anda dan bandar yang ditanya perlu diubah suai mengikut keperluan sebenar.

Langkah 3: Hantar data ramalan cuaca masa nyata
Selepas mendapatkan data ramalan cuaca, kami boleh menghantar data kepada pelanggan yang disambungkan melalui pelayan WebSocket.

Dalam kaedah onOpen kelas WeatherForecast, kami boleh memanggil kaedah broadcastMessage untuk menyiarkan mesej kepada semua pelanggan yang disambungkan. Contoh kod adalah seperti berikut:

public function onOpen(ConnectionInterface $conn) { $url = 'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Beijing'; $response = file_get_contents($url); $data = json_decode($response, true); $this->broadcastMessage($data['current']); }
Salin selepas log masuk

Dalam kod di atas, kami menggunakan medan semasa data ramalan cuaca sebagai kandungan mesej dan menyiarkannya kepada semua pelanggan yang disambungkan melalui kaedah broadcastMessage.

Dalam kaedah onMessage kelas WeatherForecast, kami boleh memproses mesej yang dihantar oleh pelanggan dan menghantar data yang sepadan mengikut keperluan sebenar. Contoh kod adalah seperti berikut:

public function onMessage(ConnectionInterface $from, $msg) { if ($msg === 'getWeather') { $url = 'https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Beijing'; $response = file_get_contents($url); $data = json_decode($response, true); $from->send($data['current']); } }
Salin selepas log masuk

Dalam kod di atas, apabila pelanggan menghantar mesej getWeather, kami akan memulakan permintaan HTTP sekali lagi untuk mendapatkan data ramalan cuaca terkini dan menghantarnya kepada pelanggan.

Langkah 4: Akses dan paparan pelanggan
Akhir sekali, kami perlu menulis kod pelanggan untuk mengakses dan memaparkan data ramalan cuaca masa nyata. Dalam artikel ini, kami menggunakan JavaScript untuk melaksanakan fungsi bahagian klien.

Salin selepas log masuk

Dalam kod di atas, kami mencipta objek WebSocket dan menentukan alamat pelayan sebagai ws://localhost:8080. Dalam acara onopen, kami menghantar mesej getWeather kepada pelayan untuk mencetuskan pelayan menghantar data ramalan cuaca masa nyata. Dalam acara onmessage, kami memproses mesej yang dihantar oleh pelayan dan memaparkannya pada halaman web.

Ringkasan
Dengan membangunkan WebSocket dalam PHP, kami boleh melaksanakan fungsi ramalan cuaca masa nyata. Melalui pelayan WebSocket, komunikasi masa nyata dua hala antara pelanggan dan pelayan boleh dicapai. Dengan mengakses API ramalan cuaca dan menghantar data ramalan cuaca masa nyata, kami boleh menghantar data ramalan cuaca terkini kepada pelanggan yang disambungkan tepat pada masanya dan memaparkannya pada pelanggan. Kaedah ini bukan sahaja dapat memenuhi keperluan ramalan cuaca masa nyata, tetapi juga boleh digunakan pada senario tolak data masa nyata yang lain.

Atas ialah kandungan terperinci Gunakan php untuk membangunkan Websocket untuk mencipta fungsi ramalan cuaca masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!