双方向通信のためのWebSocket
クライアントとサーバー間でリアルタイムに双方向のデータを交換するのに適した全二重通信プロトコル、WebSocketを実装し、その仕組みを理解します。
「双方向通信のためのWebSocket」はCoddyKit上の無料Real-Time Streaming Systems (WebRTC + Live Data)レッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReal-Time Streaming Systems (WebRTC + Live Data)学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Real-Time Streaming Systems (WebRTC + Live Data)コースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
What are WebSockets?
Imagine a phone call where both people can talk and listen at the same time, without hanging up and redialing for each sentence. That's similar to a WebSocket connection!
WebSockets provide a full-duplex communication channel over a single, long-lived connection. This means data can flow in both directions simultaneously, making real-time interactions smooth and efficient.
Beyond HTTP: Bidirectional Flow
Traditional HTTP communication works like sending a letter and waiting for a reply. Each request is separate.
- HTTP: Client sends a request, server sends a response. Connection usually closes.
- WebSockets: Once connected, client and server can send messages to each other at any time, without needing a new request/response cycle. The connection stays open.
This persistent, bidirectional nature is crucial for live updates.
Establishing a WebSocket
A WebSocket connection starts with a standard HTTP request, but it includes a special header to 'upgrade' the connection.
This process is called the WebSocket Handshake:
- Client sends an HTTP request with an 'Upgrade' header.
- Server responds with a '101 Switching Protocols' status.
- The connection then becomes a persistent WebSocket connection.
After the handshake, the underlying TCP connection is used for direct WebSocket message exchange.
Your Browser's WebSocket API
In web browsers, you interact with WebSockets using the built-in WebSocket API. It's a JavaScript object that handles the connection details for you.
You create a new WebSocket instance by providing the URL of your WebSocket server. This URL typically starts with ws:// for unencrypted or wss:// for encrypted connections (secure WebSockets).
Connecting to a Server
Let's see how to establish a basic WebSocket connection from your browser. We'll connect to a public echo server that simply sends back whatever it receives.
Try running this example. You should see 'Connected!' when the connection is established.
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Connect</title>
</head>
<body>
<h1>Connecting...</h1>
<script>
// Use wss:// for secure connections
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
document.querySelector('h1').innerText = 'Connected!';
console.log('WebSocket connection opened');
};
socket.onerror = (error) => {
document.querySelector('h1').innerText = 'Error!';
console.error('WebSocket Error:', error);
};
</script>
</body>
</html>Sending Data to the Server
Once connected, you can send data to the WebSocket server using the send() method of your WebSocket object. You can send text, binary data, or even JSON strings.
In this example, type a message and click 'Send'. The echo server will receive it.
<!DOCTYPE html>
<html>
<head>
<title>Send WebSocket</title>
</head>
<body>
<input type="text" id="messageInput" placeholder="Type a message">
<button onclick="sendMessage()">Send</button>
<p id="status"></p>
<script>
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
document.getElementById('status').innerText = 'Connected. Send a message!';
};
function sendMessage() {
const input = document.getElementById('messageInput');
const message = input.value;
if (socket.readyState === WebSocket.OPEN) {
socket.send(message);
document.getElementById('status').innerText = 'Sent: ' + message;
input.value = ''; // Clear input after sending
} else {
document.getElementById('status').innerText = 'Not connected yet!';
}
}
</script>
</body>
</html>Receiving Server Updates
To receive messages from the server, you listen for the message event using socket.onmessage. The event object contains the received data.
Run this code. It sends a message on open, and then displays the echo server's response.
<!DOCTYPE html>
<html>
<head>
<title>Receive WebSocket</title>
</head>
<body>
<h1>Echo Messages</h1>
<ul id="messages"></ul>
<script>
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
console.log('WebSocket connection opened.');
// Send a message to get a response from the echo server
socket.send('Hello Echo Server!');
};
socket.onmessage = (event) => {
const messageList = document.getElementById('messages');
const newItem = document.createElement('li');
newItem.textContent = 'Received: ' + event.data;
messageList.appendChild(newItem);
};
socket.onerror = (error) => {
console.error('WebSocket Error:', error);
};
</script>
</body>
</html>Closing WebSockets Gracefully
It's good practice to manage your WebSocket connections. You can close a connection using the socket.close() method.
Additionally, you can listen for other events:
socket.onclose: Fired when the connection is closed.socket.onerror: Fired if an error occurs during connection.
Properly handling these events helps build robust real-time applications.
Where WebSockets Shine
WebSockets are perfect for applications that need instant, continuous updates between clients and servers. Common use cases include:
- Real-time chat applications: Messages appear instantly for all participants.
- Live sports scores/stock tickers: Data updates without page refreshes.
- Multiplayer online games: Synchronizing game state and player actions.
- Collaborative editing: Seeing changes from others in real-time.
They provide a more efficient alternative to repeatedly polling a server.
WebSocket Knowledge Check
You've learned about WebSockets. Let's test your understanding!
WebSockets Summary
Great job! In this lesson, you explored WebSockets, a powerful technology for real-time communication.
- WebSockets provide full-duplex, bidirectional communication.
- They establish a persistent connection after an HTTP handshake.
- The browser's
WebSocketAPI allows you to connect, send, and receive messages. - WebSockets are ideal for applications needing instant, continuous updates.
Next, you'll delve into practical applications of data channels in WebRTC!
AI チューターと学ぶ Real-Time Streaming Systems (WebRTC + Live Data) — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「双方向通信のためのWebSocket」レッスンは無料ですか?
はい。「双方向通信のためのWebSocket」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Real-Time Streaming Systems (WebRTC + Live Data)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Real-Time Streaming Systems (WebRTC + Live Data)コースには全4レッスンが含まれています。
「双方向通信のためのWebSocket」で何を学びますか?
クライアントとサーバー間でリアルタイムに双方向のデータを交換するのに適した全二重通信プロトコル、WebSocketを実装し、その仕組みを理解します。 ブラウザで直接実行するハンズオンコードでReal-Time Streaming Systems (WebRTC + Live Data)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Real-Time Streaming Systems (WebRTC + Live Data)を始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReal-Time Streaming Systems (WebRTC + Live Data)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「双方向通信のためのWebSocket」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReal-Time Streaming Systems (WebRTC + Live Data)レッスンでコードを書いて実行できますか?
はい。すべてのReal-Time Streaming Systems (WebRTC + Live Data)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ライブデータと従来のHTTP
- 双方向通信のためのWebSocket
- 一方向プッシュのためのServer-Sent Events(SSE)
- ロングポーリングとストリーミングへの進化