ReactでWebsocket APIを扱う時に、適切なライブラリを利用することが多くなります。本文では、ReactのWebsocketを扱えるライブラリの基本情報を紹介した上、その使い方をも完全に紹介していこうと思います。ReactでWebSocketを扱う必要がある場合、ぜひ本文の内容を参照にしてください。
ApidogはWebSokcetの動作を正確に確保することができますので、下記のボタンから完全無料で利用を始めましょう👇👇👇
WebSocketとは
WebSocketは、クライアントとサーバー間で実時間の双方向通信を実現するためのWeb通信技術です。これまでWebアプリケーションでは、AJAXなどの通信方式ではリアルタイム性に限界がありました。 WebSocketを使うことで、サーバーからクライアントへのデータのプッシュ送信が容易に実現できるため、チャットや cdata変更通知などの実時間性が必要な用途に向いています。
また、HTTPベースの通信と比べて接続オーバーヘッドやパケットサイズが小さいことから、高頻度のデータ送受信にも効率的です。

なぜかReactでWebSocketを扱う?
ReactはUIコンポーネントを構築するためのJavaScriptのライブラリであり、フロントエンドのWebアプリケーション開発に広く利用されています。Reactはユーザインターフェースの複雑な部分をカプセル化し、コンポーネントベースで大規模アプリも構築できるように設計されています。宣言的な開発が可能で、開発効率と実行速度の両立が大きな特徴です。
リアルタイム更新を実現するために、ReactでWebSocketを利用する必要があります。ReactでWebSocketを扱う主なメリットは以下の点があげられます。
- 状態管理が容易:Reactのstateと連動させることで、WebSocketを通じたデータの状態管理がしやすい
- コンポーネント指向で実装できる:connect/disconnect、送受信ロジックをコンポーネントとしてカプセル化できる
- 既存アプリに取り込みやすい:SPA形式のReactアプリにWebSocketを取り入れやすい
- リアルタイムUIの実現:受信データをもとにUIのリアルタイム更新が可能
- RxJSとの相性が良い:非同期ストリーム処理に向いたRxJSと組み合わせやすい
このように、Reactの特徴を生かしつつ、WebSocket通信によるリアルタイム性・双方向性をアプリに付加できます。 状態管理・コンポーネント設計・既存アプリへの取り込みなどの面でメリットが大きいです。
また、WebSocketは、主流のブラウザでもアクセス可能なWeb APIになります。ReactはJavaScript言語をベースにしたライブラリなので、特別な設定や追加コンポーネントをインストールしなくてもWebSocketにアクセスすることができます。次は、ReactでWebSokcetとの接続を確立して通信処理を実装するために、次はそのサンプルコードになります:
const socket = new WebSocket("ws://localhost:8080");
// Connection opened
socket.addEventListener("open", event => {
socket.send("Connection established");
});
// Listen for messages
socket.addEventListener("message", event => {
console.log("Message from server ", event.data);
});
ReactでWebSocketを利用するには、特定のReactライブラリを必要としませんが、適切なライブラリを使用するのがより便利にWebsocketを利用できます。
Reactで利用可能なWebSocketライブラリ
ReactでWebsocket通信を実装する際に便利なライブラリにはたくさんありますが、次は、ユーザーに多く利用されているライブラリをみなさんに紹介していこうと思います。
React Websockets
もっともメジャーなReactのWebsocketsライブラリとして、connect/disconnectの管理機能が充実しています。
React use-websocket
Hooksを活用したシンプルな設計のため、非常に扱いやすく上手くReactと親和性が高いライブラリです。基本的な接続の確立やメッセージ送受信、再接続の管理程度であれば、大規模なアプリケーションにおいても手軽に利用できると思われます。
@stomp/react-websocket
@stomp/react-websocketは、ReactでWebSocketを使ったStompプロトコルの通信を実現するためのライブラリです。RxJSとの相性がよく、イベント駆動型のアーキテクチャを構築しやすい特徴があります。
Socket.io Client
Socket.io Clientとは、Socket.ioライブラリのクライアント側実装のことです。つまりブラウザやモバイルアプリなどからSocket.ioサーバへ接続するためのライブラリです。
ws
原生のWebSocket APIラッパーライブラリとして、シンプルながら軽量で拡張性も高いというメリットがあると指摘されています。
上記で紹介したのは、ReactでWebSocket通信を実装するために使われる主なWebSocketライブラリになります。
ReactでWebSocketを扱う方法
次は、React useWebSocketというライブラリを使用して、ReactフレームワークでWebSocketを扱う具体的な利用手順を皆さんに解説していきたいと思います。
ステップ⒈ライブラリをインストール
このライブラリを利用するには、まずはそれをインストールする必要があります。次のコマンドを利用して、NPMかYARNで当該ライブラリをインストールすることができます。
npm install react-use-websocket
# or
yarn add react-use-websocket
ステップ⒉Hookをインポート
Reactコンポーネントでは、react-use-websocket
から useWebSocket
のhookをインポートします。
import { useWebSocket } from 'react-use-websocket';
ステップ⒊コンポーネントでHookを使用
機能コンポーネント内でuseWebSocket
Hookを使用し、そのHookにWebSocketのURLをパラメータで渡して利用してください
import React from 'react';
import { useWebSocket } from 'react-use-websocket';
const MyWebSocketComponent = () => {
const socketUrl = 'wss://your-websocket-url';
const { sendJsonMessage, lastJsonMessage } = useWebSocket(socketUrl);
// Your component logic here...
return (
<div>
{/* Render your component content */}
</div>
);
};
export default MyWebSocketComponent;
ステップ⒋WebSocket通信を行う
sendJsonMessage
を使って、JSONメッセージをWebSocketのサーバーサイドに送信することができます。lastJsonMessage
はサーバーサイドから受信したJSONメッセージを反映します。
次は、そのサンプルコードになります:
import React, { useState } from 'react';
import { useWebSocket } from 'react-use-websocket';
const MyWebSocketComponent = () => {
const socketUrl = 'wss://your-websocket-url';
const { sendJsonMessage, lastJsonMessage } = useWebSocket(socketUrl);
const [message, setMessage] = useState('');
const sendMessage = () => {
if (message.trim() !== '') {
sendJsonMessage({ type: 'chat', message });
setMessage('');
}
};
return (
<div>
<div>
Last received message: {lastJsonMessage && lastJsonMessage.message}
</div>
<input
type="text"
value={message}
onChange={(e) => setMessage(e.target.value)}
/>
<button onClick={sendMessage}>Send Message</button>
</div>
);
};
export default MyWebSocketComponent;
このコードは、ReactでuseWebSocket
フックを利用してWebSocket通信を行うサンプルコンポーネントの実装例です。入力したメッセージをWebSocket経由で送受信し、受信メッセージを表示するシンプルなチャット機能が実装されています。
しかし、 'wss://your-websocket-url'
を実際のWebSocketサーバーのURLに置き換えることを忘れないでください。 また、自分のユースケースに従って、メッセージのフォーマットやロージックなどを調整する必要がもあるのでしょう。
おすすめのWebSocketオンラインテストツール
WebSocket APIを正しく動作させるため、接続テスト、メッセージの送受信テストなど、多くの項目をデバッグしてテストすることが必要です。WebSocket APIのデバッグとテストをオンラインで行うため、次は、ApidogというWebSocketオンラインテストツールを紹介します。
ApidogでWebSocket APIをテストする方法
それでは、次はまずApidogでWebSocket APIをテストする方法を皆さんに紹介します。
ステップ⒈WebSocketのリクエストを作成
ApidogでWebSocket APIをテストしたい場合、まずはWebSocketのリクエストを作成して、URL、メッセージなどの各パラメータを記入する必要があります。

ステップ⒉メッセージを送信
メッセージタブでは、サーバーに送信したいメッセージを記入することができます。送信ボタンをクリックすると、サーバーが当該メッセージを受信できます。

ステップ⒊パラメータの渡し
通信中に、クリエパラメータをアドレスに追加することでそのパラメータを渡すこともできます。渡せるデータ型には、文字列、整数、数字、配列が含まれており、これらのデータを成功に渡すと、サーバーはこれらのデータ型を受信できます。

ステップ⒋リクエストの保存
リクエストの設定が終わると、「保存」ボタンをクリックして、当該リクエストを保存できます。

ステップ⒌WebSocketサーバーに接続
**「接続」**ボタンをクリックして、WebSocketサーバーに接続します。

ApidogはWebSocketサーバーへの接続に成功した場合、提示メッセージが返されます。

ステップ⒍WebSocketのリクエストを送信
**「送信」**ボタンをクリックして、メッセージとパラメータをWebSocketサーバーに送信できます。

ステップ⒎WebSocketサーバーとの通信
リクエストを送信した後、サーバーからメッセージを受信することもできます。例えば、サーバー側が秒単位でクライアントにタイムスタンプを送信することができます。

ステップ⒏WebSocketサーバーとの接続を切断
WebSocketサーバーから接続を切断したい場合、「切断」ボタンをクリックします。

接続が成功に切断された場合、Apidogで提示メッセージが表示されます。

まとめ
WebSocketを使ったリアルタイム通信機能は、Webアプリ開発に欠かせない要素となっています。Reactもまた、フロントエンド開発のデファクトスタンダードとして広く利用されているため、ReactでWebSocketを扱えることが重要視されています。本文では、ReactプロジェクトにおいてWebSocket通信を実装するための方法とポイントを紹介しました。React用の便利なWebSocketライブラリを使用することで、接続処理や状態管理などの基本的な実装の複雑さを減らすことができます。
特にreact-use-websocket
といったHookベースのライブラリは、シンプルなAPIでWebSocket通信機能を簡潔な記述で利用できるため、おすすめです。
また、WebSocketの検証とデバッグに有用なツールとして、オンラインサービスのApidogをご紹介しました。WebSocketサーバーへの接続確認やメッセージ送受信のテストなどがGUIベースで簡単に行えるため、開発効率の向上が期待できます。