


Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pengundian dalam talian berdasarkan protokol WebSocket
Dalam era maklumat hari ini, sistem pengundian dalam talian telah menjadi bahagian penting dalam pilihan raya, tinjauan dan aktiviti lain. Berbanding kaedah pengundian tradisional, sistem pengundian dalam talian bukan sahaja mudah dikendalikan, tetapi juga pantas dan boleh merealisasikan fungsi seperti statistik masa nyata.
Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman PHP untuk membina sistem pengundian dalam talian berdasarkan protokol WebSocket. Pada masa yang sama, contoh kod khusus akan diberikan untuk rujukan pembaca.
1. Apakah Pekerja?
Workerman ialah rangka kerja tak segerak PHP sumber terbuka berprestasi tinggi Ia berdasarkan idea dipacu peristiwa dan boleh melaksanakan aplikasi sambungan panjang dengan mudah, seperti WebSocket, pemesejan segera dan aplikasi lain.
Workerman menyokong protokol seperti TCP, UDP dan HTTP, dan mempunyai ciri konkurensi tinggi dan penggunaan memori yang rendah. Berbanding dengan aplikasi web tradisional, Workerman mempunyai prestasi masa nyata dan kestabilan yang lebih kukuh, jadi ia sesuai untuk senario aplikasi seperti permainan dalam talian, bilik sembang, rentak dan tolak mesej.
2. Bina pelayan WebSocket
Sebelum kita mula, kita perlu memastikan bahawa persekitaran PHP telah dipasang dan rangka kerja Workerman telah dipasang. Untuk prosedur pemasangan tertentu, sila rujuk kepada dokumentasi rasmi.
Seterusnya, kita perlu mencipta fail PHP baharu untuk memulakan pelayan WebSocket dan mendengar mesej yang dihantar oleh pelanggan. Katakan kita membuka perkhidmatan WebSocket pada port 8080
dari 127.0.0.1
setempat Kodnya adalah seperti berikut: 127.0.0.1
的 8080
端口开启 WebSocket 服务,代码如下:
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; use WorkermanWebServer; use WorkermanProtocolsWebsocket; $ws_worker = new Worker('websocket://127.0.0.1:8080'); $ws_worker->count = 1; $ws_worker->onWorkerStart = function() { echo "WebSocket server started "; }; $ws_worker->onConnect = function($connection) { echo "New connection established: {$connection->id} "; }; $ws_worker->onMessage = function($connection, $data) { echo "Received a message from {$connection->id}: $data "; }; Worker::runAll();
以上代码中,我们使用 Workerman 的 Worker
类来开启一个 WebSocket 服务器,并监听 127.0.0.1
的 8080
端口。count
属性指定了开启的进程数。当有客户端连接时,onConnect
回调函数将会被触发;当有客户端发送消息时,onMessage
回调函数将被触发。我们可以在这两个回调函数中处理客户端的连接和消息。
三、实现在线投票系统
在投票系统中,我们需要支持多个用户同时进行投票,并且需要实时地显示投票结果。为了实现这样的功能,我们需要使用 PHP 的共享内存机制,以及在客户端和服务器之间传递数据的 JSON 格式。
首先,我们需要在服务器端定义一个关联数组 $votes
,用于存储每个投票选项的得票数。在每次接收到客户端的投票请求时,我们会将对应的选项得票数加一,而不同选项的得票数则保存在不同的数组元素中。
<?php // ... $votes = [ 'Option 1' => 0, 'Option 2' => 0, 'Option 3' => 0, ]; $ws_worker->onMessage = function($connection, $data) use ($votes) { $data = json_decode($data, true); if (!isset($data['option']) || !isset($votes[$data['option']])) { // 投票选项不存在或者为空 $connection->send(json_encode([ 'code' => 400, 'message' => 'Invalid option' ])); return; } $votes[$data['option']]++; // 广播投票结果 broadcast(json_encode([ 'code' => 200, 'message' => 'Vote successfully', 'data' => $votes ])); }; function broadcast($data) { global $ws_worker; foreach ($ws_worker->connections as $connection) { $connection->send($data); } }
以上代码中,我们使用了 PHP 的 global
关键字,将 $ws_worker
对象引入到 broadcast
函数中,在每次投票后将投票结果以 JSON 格式广播给所有连接的客户端。在上面的代码中,我们还定义了一个 broadcast
函数,用于将消息发送给所有已连接的客户端。
接下来,我们需要实现客户端的投票功能。在 HTML 页面中,我们可以通过 JavaScript 代码创建 WebSocket 对象,用于与服务器进行实时通信。
<!DOCTYPE html> <html> <head> <title>WebSocket - Online Voting System</title> </head> <body> <h1 id="Online-Voting-System">Online Voting System</h1> <p>Vote for your favorite option:</p> <form id="form"> <input type="radio" name="option" value="Option 1">Option 1<br> <input type="radio" name="option" value="Option 2">Option 2<br> <input type="radio" name="option" value="Option 3">Option 3<br> <input type="submit" value="Vote"> </form> <ul id="result"> <li>Option 1: <span id="vote1"></span></li> <li>Option 2: <span id="vote2"></span></li> <li>Option 3: <span id="vote3"></span></li> </ul> <script type="text/javascript"> var ws = new WebSocket('ws://127.0.0.1:8080'); ws.onopen = function() { console.log('WebSocket connected'); } ws.onmessage = function(event) { var data = JSON.parse(event.data); if (data.code === 200) { // 投票成功 updateVotes(data.data); } else { // 投票失败 console.error(data.message); } } function updateVotes(votes) { document.querySelector('#vote1').innerHTML = votes['Option 1']; document.querySelector('#vote2').innerHTML = votes['Option 2']; document.querySelector('#vote3').innerHTML = votes['Option 3']; } var form = document.querySelector('#form'); form.addEventListener('submit', function(event) { event.preventDefault(); var option = document.querySelector('input[name="option"]:checked'); if (!option) { console.error('Please choose an option'); return; } var data = { option: option.value }; ws.send(JSON.stringify(data)); option.checked = false; }); </script> </body> </html>
以上代码中,我们使用了 WebSocket
对象的 onopen
、onmessage
两个回调函数,分别用于在连接建立后输出日志和接收来自服务器的消息。在表单中,我们使用 submit
事件来捕获用户投票的行为,并通过 WebSocket
对象将投票信息发送到服务器。在每次接收到服务器发送的投票结果时,我们会通过 updateVotes
rrreee
Worker
Workerman untuk membuka pelayan WebSocket dan mendengar port 8080
127.0.0.1
. Atribut count
menentukan bilangan proses yang dimulakan. Apabila pelanggan menyambung, fungsi panggil balik onConnect
akan dicetuskan apabila pelanggan menghantar mesej, fungsi panggil balik onMessage
akan dicetuskan. Kami boleh mengendalikan sambungan dan mesej pelanggan dalam dua fungsi panggil balik ini. 3. Laksanakan sistem pengundian dalam talian Dalam sistem pengundian, kita perlu menyokong berbilang pengguna untuk mengundi pada masa yang sama, dan perlu memaparkan keputusan pengundian dalam masa nyata . Untuk melaksanakan fungsi tersebut, kita perlu menggunakan mekanisme memori kongsi PHP dan format JSON untuk menghantar data antara klien dan pelayan. #🎜🎜##🎜🎜#Pertama, kita perlu mentakrifkan tatasusunan bersekutu $votes
di sebelah pelayan untuk menyimpan bilangan undian bagi setiap pilihan pengundian. Setiap kali kami menerima permintaan undian daripada pelanggan, kami akan menambah satu pada bilangan undian untuk pilihan yang sepadan dan bilangan undian untuk pilihan yang berbeza akan disimpan dalam elemen tatasusunan yang berbeza. #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, kami menggunakan kata kunci global
PHP untuk memperkenalkan objek $ws_worker
ke dalam broadcast
Dalam fungsi, keputusan pengundian disiarkan kepada semua pelanggan yang disambungkan dalam format JSON selepas setiap undian. Dalam kod di atas, kami juga mentakrifkan fungsi broadcast
untuk menghantar mesej kepada semua pelanggan yang disambungkan. #🎜🎜##🎜🎜#Seterusnya, kita perlu melaksanakan fungsi pengundian di pihak pelanggan. Dalam halaman HTML, kita boleh mencipta objek WebSocket melalui kod JavaScript untuk komunikasi masa nyata dengan pelayan. #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, kami menggunakan dua fungsi panggil balik objek WebSocket
onopen
dan onmessage
untuk mengeluarkan log dan menerima mesej daripada pelayan selepas sambungan diwujudkan. Dalam borang, kami menggunakan acara serahkan
untuk menangkap gelagat pengundian pengguna dan menghantar maklumat undian ke pelayan melalui objek WebSocket
. Setiap kali kami menerima keputusan undian daripada pelayan, kami mengemas kini data undian dalam halaman HTML melalui fungsi updateVotes
. #🎜🎜##🎜🎜# 4. Ringkasan #🎜🎜##🎜🎜# Artikel ini memperkenalkan cara menggunakan rangka kerja Workerman PHP untuk melaksanakan sistem pengundian dalam talian berdasarkan protokol WebSocket dan memberikan contoh kod khusus. Melalui mengkaji artikel ini, pembaca harus mempunyai pemahaman dan penguasaan yang lebih mendalam tentang rangka kerja Workerman, mekanisme memori yang dikongsi, protokol WebSocket dan pengetahuan lain. #🎜🎜#Atas ialah kandungan terperinci Pembangunan pekerja: Bagaimana untuk melaksanakan sistem pengundian dalam talian berdasarkan protokol WebSocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

Dengan perkembangan berterusan teknologi Internet, penstriman video masa nyata telah menjadi aplikasi penting dalam bidang Internet. Untuk mencapai penstriman video masa nyata, teknologi utama termasuk WebSocket dan Java. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan Java untuk melaksanakan main balik penstriman video masa nyata dan memberikan contoh kod yang berkaitan. 1. Apakah itu WebSocket? WebSocket ialah protokol untuk komunikasi dupleks penuh pada sambungan TCP tunggal

Dengan perkembangan teknologi Internet yang berterusan, komunikasi masa nyata telah menjadi bahagian yang amat diperlukan dalam kehidupan seharian. Komunikasi masa nyata yang cekap, kependaman rendah boleh dicapai menggunakan teknologi WebSockets, dan PHP, sebagai salah satu bahasa pembangunan yang paling banyak digunakan dalam bidang Internet, juga menyediakan sokongan WebSocket yang sepadan. Artikel ini akan memperkenalkan cara menggunakan PHP dan WebSocket untuk mencapai komunikasi masa nyata, dan menyediakan contoh kod khusus. 1. Apakah itu WebSocket?

Gabungan golangWebSocket dan JSON: merealisasikan penghantaran dan penghuraian data Dalam pembangunan Web moden, penghantaran data masa nyata menjadi semakin penting. WebSocket ialah protokol yang digunakan untuk mencapai komunikasi dua hala Tidak seperti model respons permintaan HTTP tradisional, WebSocket membenarkan pelayan untuk menolak data secara aktif kepada klien. JSON (JavaScriptObjectNotation) ialah format ringan untuk pertukaran data yang ringkas dan mudah dibaca.

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Bagaimanakah JavaWebsocket melaksanakan fungsi papan putih dalam talian? Dalam era Internet moden, orang ramai memberi lebih banyak perhatian kepada pengalaman kerjasama dan interaksi masa nyata. Papan putih dalam talian ialah fungsi yang dilaksanakan berdasarkan Websocket Ia membolehkan berbilang pengguna bekerjasama dalam masa nyata untuk mengedit papan lukisan yang sama dan menyelesaikan operasi seperti lukisan dan anotasi. Ia menyediakan penyelesaian yang mudah untuk pendidikan dalam talian, mesyuarat jarak jauh, kerjasama pasukan dan senario lain. 1. Latar belakang teknikal WebSocket ialah protokol baharu yang disediakan oleh HTML5

PHP dan WebSocket: Kaedah Amalan Terbaik untuk Pemindahan Data Masa Nyata Pengenalan: Dalam pembangunan aplikasi web, pemindahan data masa nyata merupakan keperluan teknikal yang sangat penting. Protokol HTTP tradisional ialah protokol model tindak balas permintaan dan tidak boleh mencapai penghantaran data masa nyata dengan berkesan. Untuk memenuhi keperluan penghantaran data masa nyata, protokol WebSocket telah wujud. WebSocket ialah protokol komunikasi dupleks penuh yang menyediakan cara untuk berkomunikasi dupleks penuh melalui sambungan TCP tunggal. Berbanding dengan H

Dalam artikel ini, kami akan membandingkan Acara Dihantar Pelayan (SSE) dan WebSockets, kedua-duanya adalah kaedah yang boleh dipercayai untuk menyampaikan data. Kami akan menganalisisnya dalam lapan aspek, termasuk arah komunikasi, protokol asas, keselamatan, kemudahan penggunaan, prestasi, struktur mesej, kemudahan penggunaan dan alat ujian. Perbandingan aspek-aspek ini diringkaskan seperti berikut: Kategori Peristiwa Dihantar Pelayan (SSE) WebSocket Arah Komunikasi Sehala Dwi-arah Protokol Pendasar HTTP WebSocket Protocol Keselamatan Sama seperti HTTP Kerentanan keselamatan sedia ada Kemudahan penggunaan Tetapan Tetapan mudah Prestasi kompleks Kelajuan penghantaran mesej pantas Dijejaskan oleh pemprosesan mesej dan pengurusan sambungan Struktur mesej Teks biasa atau binari Kemudahan penggunaan Tersedia secara meluas Berguna untuk penyepaduan WebSocket
