WebSocket により、クライアントとサーバー間のリアルタイムの全二重通信が可能になります。リクエスト/レスポンスベースの従来の HTTP リクエストとは異なり、WebSocket を使用するとサーバーとクライアントの両方がいつでもメッセージを送信できるため、ライブ チャット、通知、ライブ データ更新などのリアルタイム機能が有効になります。
React アプリケーションでは、WebSocket 統合を使用して、メッセージング システム、ライブ アップデート、株価表示ツール、マルチプレイヤー ゲームなどの機能を構築できます。 React は、WebSocket 接続の管理に役立つフックとコンポーネントのライフサイクル メソッドを提供します。
WebSocket は、クライアント (ブラウザ) とサーバーの間に双方向の通信チャネルを確立します。最初のハンドシェイク (HTTP 経由) の後、WebSocket プロトコルが引き継ぎ、永続的な接続を作成します。
WebSocket を React アプリケーションに統合する方法を見てみましょう。最新のブラウザで利用できる WebSocket API を使用します。
まず、React コンポーネントで WebSocket 接続を作成します。 useEffect フックを使用して接続を確立し、useState を使用して受信メッセージを管理します。
import React, { useState, useEffect } from 'react'; const WebSocketExample = () => { const [message, setMessage] = useState(''); const [socket, setSocket] = useState(null); // Establish WebSocket connection useEffect(() => { const ws = new WebSocket('wss://example.com/socket'); // Replace with your WebSocket server URL // Set WebSocket object in state setSocket(ws); // Set up event listener for receiving messages ws.onmessage = (event) => { console.log('Message from server:', event.data); setMessage(event.data); // Store the incoming message in state }; // Clean up WebSocket on component unmount return () => { ws.close(); }; }, []); const sendMessage = () => { if (socket && socket.readyState === WebSocket.OPEN) { socket.send('Hello Server'); } }; return ( <div> <h1>WebSocket Integration Example</h1> <p>Message from server: {message}</p> <button onClick={sendMessage}>Send Message</button> </div> ); }; export default WebSocketExample;
WebSocket は、対話するためのいくつかのイベントを提供します。
例:
const ws = new WebSocket('wss://example.com/socket'); ws.onopen = () => { console.log('WebSocket connection established'); }; ws.onerror = (error) => { console.error('WebSocket error:', error); }; ws.onclose = () => { console.log('WebSocket connection closed'); };
特に React アプリで WebSocket を操作する場合、受信したデータをリアルタイムで処理または表示する必要がある場合があります。新しいメッセージを受信するたびに状態を更新することで、これに対処できます。
たとえば、ライブ チャット アプリを構築することを想像してください。新しいメッセージで状態を更新し、動的にレンダリングします。
const [messages, setMessages] = useState([]); ws.onmessage = (event) => { const newMessage = event.data; setMessages((prevMessages) => [...prevMessages, newMessage]); // Append new message to state };
これにより、新しいメッセージがそれぞれチャット メッセージのリストに追加され、UI に表示されます。
WebSocket 接続は時々切断されることがありますが、再接続ロジックを処理することでアプリの堅牢性を確保できます。再接続ロジックは次のように実装できます:
useEffect(() => { const connectWebSocket = () => { const ws = new WebSocket('wss://example.com/socket'); ws.onopen = () => console.log('WebSocket connected'); ws.onclose = () => { console.log('WebSocket disconnected, reconnecting...'); setTimeout(connectWebSocket, 1000); // Reconnect after 1 second }; return ws; }; const ws = connectWebSocket(); // Clean up WebSocket on component unmount return () => { ws.close(); }; }, []);
このコードは、接続が閉じられるたびに WebSocket サーバーへの再接続を試みます。
React での WebSocket 統合を簡素化できるサードパーティ ライブラリがいくつかあります。
WebSocket を React アプリケーションに統合することは、ライブ データの更新やインタラクティブなユーザー エクスペリエンスなどのリアルタイム機能を有効にする強力な方法です。 useState や useEffect などのフックを使用すると、WebSocket 接続の管理、メッセージの送受信、UI とリアルタイム データの同期を簡単に行うことができます。
以上がリアルタイム通信のための React への WebSocket の統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。