ホームページ Java &#&チュートリアル Java ネットワーク プログラミングにおける WebSocket とリアルタイム通信

Java ネットワーク プログラミングにおける WebSocket とリアルタイム通信

May 09, 2024 pm 09:42 PM
ネットワークプログラミング

WebSocket は、Web クライアントとサーバー間の低遅延の永続的な接続を可能にする双方向通信プロトコルで、チャットやオンライン ゲームなどのリアルタイム通信アプリケーションの構築に広く使用されています。 Java では、WebSocket API または Spring WebSocket などのサードパーティ ライブラリを使用できます。 WebSocket API を使用して接続を確立するには、HTTP 接続の確立、ハンドシェイク、WebSocket へのアップグレードの手順が必要です。一般的な使用例は、サーバー エンドポイントがサーブレットを通じてメッセージを処理し、クライアントが JavaScript WebSocket オブジェクトを通じてサーバーに接続し、メッセージを送受信できるマルチプレイヤー チャット アプリケーションの構築です。

Java 网络编程中的 WebSocket 和实时通信

Java ネットワーク プログラミングにおける WebSocket とリアルタイム通信

WebSocket は、Web クライアントとサーバー間の低遅延で永続的な接続を可能にする双方向の全二重通信プロトコルです。チャット、リアルタイム コラボレーション、オンライン ゲームなどのリアルタイム コミュニケーション アプリケーションを構築するために広く使用されています。

WebSocket プロトコルの概要

WebSocket は、HTTP ベースのプロトコル (通常は WebSocket) 上で実行されるプロトコルです。 WebSocket 接続の確立には、次の手順が含まれます:

  1. HTTP 接続の確立: クライアントは、Upgrade: websocket ヘッダーを含む HTTP GET リクエストを送信します。
  2. ハンドシェイク: サーバーは、WebSocket キーを含む 101 Switching Protocols 応答を返します。
  3. WebSocket へのアップグレード: クライアントは、WebSocket 接続にアップグレードするために、WebSocket キーを含む HTTP 応答を送信します。

Java で WebSocket を使用する

Java で WebSocket を使用するには、Java WebSocket API または Spring WebSocket などのサードパーティ ライブラリを利用できます。このセクションでは、WebSocket API の使用例について説明します。

// 创建 WebSocket 服务器端点
WebSocketServer ws = new WebSocketServer() {

    @Override
    public void onOpen(WebSocket websocket, ClientEndpointConfig cec) {
        System.out.println("客户端已连接");
    }

    @Override
    public void onMessage(String message, WebSocket websocket) {
        System.out.println("收到客户端消息:" + message);
    }

    @Override
    public void onClose(WebSocket websocket) {
        System.out.println("客户端已断开连接");
    }

    @Override
    public void onError(WebSocket websocket, Throwable cause) {
        System.err.println("WebSocket 发生错误:" + cause.getMessage());
    }
};

ws.start();
ログイン後にコピー
rree

実践例: チャットアプリケーション

WebSocketを使用すると、複数人でのチャットアプリケーションを簡単に構築できます。以下に例を示します:

// 创建 WebSocket 客户端端点
WebSocketClient wsClient = new WebSocketClient() {

    @Override
    public void onOpen(ServerEndpointConfig sec) {
        System.out.println("连接到服务器");
    }

    @Override
    public void onMessage(String message, Session session) {
        System.out.println("收到服务器消息:" + message);
    }

    @Override
    public void onClose(Session session, CloseReason closeReason) {
        System.out.println("连接已关闭");
    }

    @Override
    public void onError(Session session, WebSocketError error) {
        System.err.println("WebSocket 发生错误:" + error.getMessage());
    }
};

wsClient.open("ws://localhost:8080/websocket");
ログイン後にコピー

以上がJava ネットワーク プログラミングにおける WebSocket とリアルタイム通信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ オープンソース ライブラリとは何ですか? C++ オープンソース ライブラリとは何ですか? Apr 22, 2024 pm 05:48 PM

C++ は、次の機能をカバーするオープン ソース ライブラリの豊富なセットを提供します: データ構造とアルゴリズム (標準テンプレート ライブラリ) マルチスレッド、正規表現 (Boost) 線形代数 (Eigen) グラフィカル ユーザー インターフェイス (Qt) コンピューター ビジョン (OpenCV) 機械学習(TensorFlow) 暗号化 (OpenSSL) データ圧縮 (zlib) ネットワーク プログラミング (libcurl) データベース管理 (sqlite3)

C++ 関数はネットワーク プログラミングで DNS クエリをどのように処理しますか? C++ 関数はネットワーク プログラミングで DNS クエリをどのように処理しますか? Apr 27, 2024 pm 06:39 PM

C++ 標準ライブラリは、ネットワーク プログラミングで DNS クエリを処理する関数を提供します。 gethostbyname(): ホスト名に基づいてホスト情報を検索します。 gethostbyaddr(): IP アドレスに基づいてホスト情報を検索します。 dns_lookup(): DNS を非同期的に解決します。

Python 試験には何レベルありますか? Python 試験には何レベルありますか? Apr 02, 2024 pm 06:00 PM

Python 試験には、Python の基本構文、高度な機能、高度な概念と基礎となるメカニズムなどを習得するために、初級から上級まで 12 レベルがあり、徐々に難易度が上がります。

Java ネットワーク プログラミングの一般的なプロトコルは何ですか? Java ネットワーク プログラミングの一般的なプロトコルは何ですか? Apr 15, 2024 am 11:33 AM

Java ネットワーク プログラミングで一般的に使用されるプロトコルには次のものがあります。 TCP/IP: 信頼性の高いデータ送信と接続管理に使用されます。 HTTP: Web データの送信に使用されます。 HTTPS: 暗号化を使用してデータを送信する安全なバージョンの HTTP。 UDP: 高速だが不安定なデータ転送。 JDBC: リレーショナル データベースと対話するために使用されます。

Java ネットワーク プログラミングでは、コネクションレス通信に UDP をどのように使用しますか? Java ネットワーク プログラミングでは、コネクションレス通信に UDP をどのように使用しますか? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) は、時間に敏感なアプリケーションで一般的に使用される軽量のコネクションレス型ネットワーク プロトコルです。これにより、アプリケーションは TCP 接続を確立せずにデータを送受信できるようになります。サンプル Java コードを使用して UDP サーバーとクライアントを作成できます。サーバーは受信データグラムをリッスンして応答し、クライアントはメッセージを送信して応答を受信します。このコードを使用して、チャット アプリケーションやデータ収集システムなどの実際のユースケースを構築できます。

Golang共通関数アドレス解決ガイド Golang共通関数アドレス解決ガイド Apr 08, 2024 pm 02:18 PM

Go 言語でアドレスを解析するための主要な関数には次のものがあります。 net.ParseIP(): IPv4 または IPv6 アドレスを解析します。 net.ParseCIDR(): CIDR タグを解析します。 net.ResolveIPAddr(): ホスト名または IP アドレスを IP アドレスに解決します。 net.ResolveTCPAddr(): ホスト名とポートを TCP アドレスに解決します。 net.ResolveUDPAddr(): ホスト名とポートを UDP アドレスに解決します。

golangを学ぶのにどれくらい時間がかかりますか golangを学ぶのにどれくらい時間がかかりますか Apr 02, 2024 pm 07:48 PM

Golangをマスターするまでにかかる時間は人によって異なりますが、通常は数か月から数年かかります。学習段階には、基礎 (1 ~ 2 か月)、中級 (3 ~ 6 か月)、上級 (6 ~ 12 か月以上) があります。学習を促進する要因には、継続的な実践、プロジェクト作業、コミュニティへの参加、オンライン リソースなどが含まれます。影響を与える要因には、以前のプログラミング経験、学習頻度、学習教材などが含まれます。

C++ 関数はネットワーク プログラミングでネットワーク セキュリティをどのように実装しますか? C++ 関数はネットワーク プログラミングでネットワーク セキュリティをどのように実装しますか? Apr 28, 2024 am 09:06 AM

C++ 関数は、ネットワーク プログラミングでネットワーク セキュリティを実現できます。その方法には、1. 暗号化アルゴリズム (openssl) を使用して通信を暗号化する、2. デジタル署名 (cryptopp) を使用してデータの整合性と送信者の身元を確認する、3. クロスサイト スクリプティング攻撃に対する防御、および( htmlcxx) ユーザー入力をフィルタリングしてサニタイズします。

See all articles