ホームページ > バックエンド開発 > PHPチュートリアル > オンラインチャットルームにおけるWebSocket技術の実用化

オンラインチャットルームにおけるWebSocket技術の実用化

WBOY
リリース: 2023-10-15 11:50:02
オリジナル
1267 人が閲覧しました

オンラインチャットルームにおけるWebSocket技術の実用化

オンライン チャット ルームにおける WebSocket テクノロジの実用的な応用

インターネットの急速な発展に伴い、インスタント メッセージングに対する人々の需要はますます高まっています。従来の HTTP プロトコルはデータを送信できますが、毎回リクエストを開始する必要があるため、非効率的です。この問題を解決するために、WebSocket テクノロジーが登場しました。 WebSocket テクノロジは、ブラウザとサーバーの間に永続的な双方向通信チャネルを確立できるため、データ送信の効率とリアルタイム パフォーマンスが大幅に向上するため、オンライン チャット ルームで広く使用されています。

WebSocket の利点:

  1. 低遅延: 従来の HTTP 要求/応答モデルと比較して、WebSocket テクノロジは永続的な接続を確立し、即時通信を実現し、より高速な通信を実現できます。チャット コンテンツを他のユーザーに送信します。
  2. ネットワーク トラフィックの削減: WebSocket テクノロジは、毎回 HTTP リクエストを送信するのではなく、接続を確立することでデータを複数回転送します。これにより、パケット数が減り、ネットワーク トラフィックが軽減されます。
  3. 互換性の向上: WebSocket テクノロジの標準は成熟しており、追加のプラグインやライブラリを必要とせずに、最新のブラウザで広くサポートされています。

以下では、オンライン チャット ルームを例として、WebSocket テクノロジの実際のアプリケーションを紹介します。

まず、サーバー側で、バックエンド言語として Node.js を使用します。 Node.js を使用する利点は、開発に JavaScript 言語を使用できるため、フロントエンドとの対話が容易になることです。

//引入WebSocket模块
const WebSocket = require('ws');

//创建WebSocket服务器
const wss = new WebSocket.Server({ port: 3000 });

//保存连接的用户
const users = new Set();

//WebSocket服务端启动成功后的回调函数
wss.on('listening', () => {
  console.log('WebSocket server is running on port 3000.');
});

//处理WebSocket连接
wss.on('connection', (ws) => {
  //将新用户添加到用户列表中
  users.add(ws);

  //监听消息事件
  ws.on('message', (message) => {
    //将消息发送给其他用户
    users.forEach((user) => {
      if (user !== ws) {
        user.send(message);
      }
    });
  });

  //监听连接关闭事件
  ws.on('close', () => {
    //将用户从用户列表中移除
    users.delete(ws);
  });
});
ログイン後にコピー

クライアント側では、HTML、CSS、JavaScript を使用してユーザー インターフェイスを実装し、サーバーと通信します。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>在线聊天室</title>
  <style>
    #chat { width: 400px; height: 300px; margin-bottom: 10px; overflow-y: auto; }
  </style>
</head>
<body>
  <div id="chat"></div>
  <input type="text" id="message" placeholder="请输入消息">
  <button id="send">发送</button>

  <script>
    const chat = document.getElementById('chat');
    const messageInput = document.getElementById('message');
    const sendButton = document.getElementById('send');

    //创建WebSocket连接
    const ws = new WebSocket('ws://localhost:3000');

    //监听WebSocket连接成功事件
    ws.addEventListener('open', () => {
      console.log('WebSocket connection is established.');
    });

    //监听WebSocket接收到消息事件
    ws.addEventListener('message', (event) => {
      const message = event.data;
      const messageNode = document.createElement('p');
      messageNode.textContent = message;
      chat.appendChild(messageNode);
    });

    //发送消息
    sendButton.addEventListener('click', () => {
      const message = messageInput.value;
      ws.send(message);
      messageInput.value = '';
    });
  </script>
</body>
</html>
ログイン後にコピー

上記のコードは、単純なオンライン チャット ルームを実装しています。ユーザーがブラウザを通じてページにアクセスすると、WebSocket 接続が確立され、ユーザーが入力したメッセージがサーバーに送信されます。サーバーは受信したメッセージを接続中の他のユーザーに転送することで、リアルタイムチャット機能を実現します。

WebSocket テクノロジーにより、オンライン チャット ルームの実用化が実現します。 WebSocket の双方向通信は、時間遅延とネットワーク トラフィックを効果的に削減し、より良いユーザー エクスペリエンスを提供します。 WebSocket テクノロジーは今後も発展し、改良されていくため、より多くの分野で応用され、推進されることになると思います。

以上がオンラインチャットルームにおけるWebSocket技術の実用化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート