ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js での WebSocket とリアルタイム通信の操作
最新のアプリケーションでは、特にライブ チャット、通知、共同作業ツールなどの機能において、リアルタイムのコミュニケーションが重要です。 WebSocket は、単一の長期接続を介してクライアントとサーバー間の双方向通信を可能にするプロトコルです。この記事では、WebSocket、Node.js での WebSocket の実装、およびリアルタイム アプリケーションでの WebSocket の使用を簡素化する人気のあるライブラリである Socket.IO の役割について説明します。
WebSocket は、永続的な接続を維持するプロトコルであり、HTTP の一定の要求と応答のサイクルを必要とせずにデータ交換を可能にします。いくつかの使用例は次のとおりです:
ws パッケージを使用して簡単な WebSocket サーバーを構築しましょう。
ステップ 1: ws をインストールします:
npm install ws
ステップ 2: WebSocket サーバーを作成します:
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
ステップ 3: クライアント側からの接続:
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
Socket.IO は、リアルタイム通信を簡素化し、自動再接続やブロードキャストなどの機能を追加するライブラリです。
npm install socket.io
サーバー側の実装:
const express = require('express'); const http = require('http'); const { Server } = require('socket.io'); const app = express(); const server = http.createServer(app); const io = new Server(server); io.on('connection', (socket) => { console.log('A user connected'); socket.on('chat message', (msg) => { // Broadcast message to all connected clients io.emit('chat message', msg); }); socket.on('disconnect', () => { console.log('User disconnected'); }); }); server.listen(3000, () => { console.log('Server is listening on http://localhost:3000'); });
クライアント側の実装:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Real-Time Chat</title> </head> <body> <h1>Chat Room</h1> <input> <h2> Node.js Streams: Efficient Data Handling </h2> <p>Node.js streams provide a way to process data piece by piece, which is particularly useful for handling large files.</p> <h3> Types of Streams </h3> <ol> <li> <strong>Readable</strong>: For reading data from a source.</li> <li> <strong>Writable</strong>: For writing data to a destination.</li> <li> <strong>Duplex</strong>: For both reading and writing.</li> <li> <strong>Transform</strong>: For modifying or transforming data as it’s read or written.</li> </ol> <h3> Example: Reading a Large File with Streams </h3> <pre class="brush:php;toolbar:false">const fs = require('fs'); const readStream = fs.createReadStream('largefile.txt', { encoding: 'utf8' }); readStream.on('data', (chunk) => { console.log('New chunk received:', chunk); }); readStream.on('end', () => { console.log('File reading completed'); });
Node.js アプリケーションをスケーリングすると、リソースを追加して増加した負荷を確実に処理できるようになります。
NGINX は、負荷分散、キャッシュ、静的コンテンツの提供によく使用される Web サーバーです。
npm install ws
/etc/nginx/sites-available/default を編集します:
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
SSL はクライアントとサーバー間のデータを暗号化し、セキュリティ層を追加します。 SSL を設定するには:
npm install socket.io
この記事では、実稼働レベルのデプロイメントのための Node.js アプリケーションのリアルタイム通信、効率的なデータ処理、スケーリング、およびセキュリティ保護の本質を検討しました。 WebSocket、Socket.IO、NGINX、Node.js ストリームは、アプリケーションの対話性、データ管理、セキュリティを強化して、ユーザー エクスペリエンスとスケーラビリティを向上させる強力なツールです。
以上がNode.js での WebSocket とリアルタイム通信の操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。