WebSocket は、単一の存続期間の長い接続を介して全二重通信チャネルを提供し、クライアント (通常は Web ブラウザ) とサーバー間のリアルタイム通信を可能にします。ここでは、HTML5 で WebSocket を使用する方法の基本的な概要を示します。
WebSocket API: WebSocket API は、ほとんどの最新ブラウザでサポートされています。 WebSocket 接続を確立するには、JavaScript でWebSocket
オブジェクトを使用できます。
JavaScript // Create a WebSocket instance
const socket = new WebSocket('ws://example.com/socket');
// Event handlers
socket.onopen = function(event) {
console.log('WebSocket connection opened:', event);
};
socket.onmessage = function(event) {
console.log('Received message:', event.data);
};
socket.onclose = function(event) {
console.log('WebSocket connection closed:', event);
};
// Send a message
socket.send('Hello, server!');
サーバーの実装: WebSocket 通信をサポートするサーバーが必要です。一般的な選択肢には、 ws
などのライブラリを使用した Node.js や、Socket.IO などのフレームワークの使用が含まれます。
Node.js とws
ライブラリを使用した例:
JavaScript const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 3000 });
server.on('connection', (socket) => {
console.log('Client connected');
// Handle messages from clients
socket.on('message', (message) => {
console.log('Received:', message);
// Send a response
socket.send('Hello, client!');
});
// Handle the connection closing
socket.on('close', () => {
console.log('Client disconnected');
});
});
セキュア接続 (WSS): Web サイトで HTTPS を使用している場合は、セキュリティのため、 ws
ではなくwss
(WebSocket Secure) を使用する必要があります。これにより、暗号化された通信が保証されます。
JavaScriptconst socket = new WebSocket('wss://example.com/socket');
エラー処理:エラー処理を実装して、予期しない状況を管理します。
JavaScript socket.onerror = function(error) {
console.error('WebSocket error:', error);
};
ブロードキャスト:サーバーは、接続されているすべてのクライアントにメッセージをブロードキャストできます。
JavaScript // Inside the server connection handler
server.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send('Broadcast message to all clients');
}
});
接続を閉じる:クライアントまたはサーバーから WebSocket 接続を閉じることができます。
JavaScript // Close the connection from the client
socket.close();
// Close the connection from the server
// Inside the server connection handler
socket.close();
これらは、開始するための基本的な例にすぎません。特定の使用例によっては、認証、さまざまな種類のメッセージの処理、接続障害の処理など、さらに多くの機能を実装する必要がある場合があります。