WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang digunakan secara meluas dalam pembangunan web untuk mencapai fungsi komunikasi masa nyata. Dalam artikel ini, kami akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem soal jawab dalam talian yang mudah.
Kami mula-mula menulis templat HTML asas dan memperkenalkan perpustakaan JavaScript yang diperlukan oleh WebSocket ke dalamnya.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>在线问答系统</title> </head> <body> <div id="messages"></div> <form id="message-form"> <input type="text" id="message-input" placeholder="请输入您的问题..."> <button type="submit">提交</button> </form> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="websocket.js"></script> </body> </html>
Kami menyimpan kod JavaScript berkaitan WebSocket dalam fail berasingan. Dalam fail ini, kita perlu menentukan beberapa pembolehubah dan fungsi dan mewujudkan sambungan WebSocket supaya pelayan boleh menghantar mesej kepada klien.
// 声明变量 const serverUrl = 'ws://localhost:8080'; // WebSocket服务器地址 const socket = new WebSocket(serverUrl); // WebSocket连接 // 监听WebSocket事件 socket.onopen = function(event) { console.log('[WebSocket] 连接成功', event); }; socket.onclose = function(event) { console.log('[WebSocket] 连接关闭', event); }; socket.onerror = function(event) { console.error('[WebSocket] 发生错误', event); }; socket.onmessage = function(event) { console.log('[WebSocket] 收到消息', event); showMessage(event.data); }; // 发送消息到WebSocket服务器 function sendMessage(message) { socket.send(message); } // 显示消息 function showMessage(message) { $('#messages').append($('<p>').text(`机器人:${message}`)); } // 提交问题 $('#message-form').submit(function(event) { event.preventDefault(); const messageInput = $('#message-input'); const message = messageInput.val(); messageInput.val(''); $('#messages').append($('<p>').text(`你:${message}`)); sendMessage(message); });
Akhir sekali, kita perlu menulis kod sebelah pelayan. Dalam artikel ini, kami akan menggunakan Node.js sebagai persekitaran pembangunan pelayan dan menggunakan perpustakaan ws untuk menyediakan perkhidmatan WebSocket.
const WebSocketServer = require('ws').Server; const server = new WebSocketServer({ port: 8080 }); console.log('WebSocket服务器已启动'); // 监听WebSocket连接事件 server.on('connection', function(socket) { console.log('WebSocket连接已建立'); // 监听WebSocket消息事件 socket.on('message', function(message) { console.log('收到消息', message); const response = handleQuestion(message); socket.send(response); }); // 监听WebSocket关闭事件 socket.on('close', function() { console.log('WebSocket连接已关闭'); }); }); // 处理问题 function handleQuestion(question) { // TODO: 添加问题处理逻辑 return '这是机器人的回答'; }
Dalam kod di atas, kami mencipta objek WebSocketServer dan mendengar sambungan, mesej dan acara tutup padanya. Apabila menerima mesej yang dihantar oleh klien, pelayan akan memanggil fungsi handleQuestion untuk memprosesnya, dan kemudian menghantar balasan kembali kepada klien.
Kini, kami membuka dua tetingkap pelayar, satu bertindak sebagai pelanggan dan satu lagi bertindak sebagai pelayan. Masukkan soalan anda dalam pelayar klien dan klik butang hantar. Pelayan akan membalas dengan mesej yang menunjukkan jawapan robot dan memaparkannya dalam pelayar klien.
Pada ketika ini, kami telah berjaya melaksanakan sistem soal jawab dalam talian yang mudah. Sudah tentu, ini hanyalah contoh asas dan anda boleh memanjangkan dan mengoptimumkannya mengikut keperluan anda sendiri.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan sistem soal jawab dalam talian menggunakan WebSocket dan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!