CocosCreator で http と WebSocket を使用する方法

CocosCreator で http と WebSocket を使用する方法

CocosCreator バージョン 2.3.4

1. HTTPGET

Get メソッドでは、クライアントはローカル アドレス ポート 3000 を要求し、パラメータ url と name を渡します。サーバーはそれを受信すると、name パラメータを返します。

Cocos クライアント:

//アクセスアドレス let url = "http://127.0.0.1:3000/?url=123&name=321";
//新しいHttpを作成する
xhr = new XMLHttpRequest();
//データを受信する xhr.onreadystatechange = function () {
    xhr.readyState == 4 の場合、xhr.status >= 200 の場合、xhr.status < 400 の場合
        var レスポンス = xhr.responseText;
        console.log(応答);
    }
};
//エラー処理 xhr.onerror = function(evt){
    コンソールログ(evt);
}
// リクエストを初期化、GET メソッド、true 非同期リクエスト xhr.open("GET", url, true);
//リクエストを送信 xhr.send();

テストを容易にするために、Node.js を使用してローカル マシン上にシンプルなサーバーを構築します。アクセスを受信すると、リクエスト パラメータの名前値が返されます。

Nodejs サーバー:

var app = require('express')(); 
var http = require('http').Server(app);  
 
 
app.get('/', 関数(req, res){ 
    // ドメイン間を移動できるドメイン名を設定します。* は、任意のドメイン名がドメイン間を移動できることを表します。res.header("Access-Control-Allow-Origin","*");
    // 許可されるヘッダー タイプ res.header("Access-Control-Allow-Headers","content-type");
    //クロスドメイン許可リクエストメソッドres.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
    res.send(要求クエリ名); 
}); 
   
http.listen(3000, 関数(){ 
    console.log('*:3000 でリッスンしています'); 
});

nodejs サーバーを実行し、cocos コードを実行します。

console.log(response); //出力は321

2. HTTP POST

クライアントはパラメータ名を使用してサーバーに要求し、サーバーはそれを受信した後に名前を返します。

Cocos クライアント:

url = "http://127.0.0.1:3000/" とします。
xhr = new XMLHttpRequest();
 
xhr.onreadystatechange = 関数 () {
    xhr.readyState == 4 の場合、xhr.status >= 200 の場合、xhr.status < 400 の場合
        var レスポンス = xhr.responseText;
        console.log(応答);
    }
};
xhr.onerror = 関数(evt){
    コンソールログ(evt);
}
xhr.open("POST", url, true);
xhr.setRequestHeader("コンテンツタイプ", "application/x-www-form-urlencoded");
xhr.send("名前=123");

Nodejs サーバー:

var app = require('express')(); 
var http = require('http').Server(app);  
var クエリ文字列 = require('クエリ文字列');
 
 
app.post('/', 関数(req, res){ 
    // ドメイン間を移動できるドメイン名を設定します。* は、任意のドメイン名がドメイン間を移動できることを表します。res.header("Access-Control-Allow-Origin","*");
    // 許可されるヘッダー タイプ res.header("Access-Control-Allow-Headers","content-type");
    //クロスドメイン許可リクエストメソッドres.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
     
    var 本文 = "";
     
    req.on('data', 関数(チャンク) {
        body += chunk; // 必ず += を使用してください。body=chunk の場合、favicon.ico が要求されるため、body は {} と等しくなります。
        console.log("チャンク:",チャンク);
    });
     
    req.on('end', 関数() {
        本文 = クエリ文字列.parse(本文);
        console.log("本文:",本文);
        res.send(本文.名前);
    });
}); 
   
http.listen(3000, 関数(){ 
    console.log('*:3000 でリッスンしています'); 
});

Cocos出力

console.log(応答); //出力123

ウェブソケット

Cocos クライアントコード:

ローカルサーバー127.0.0.1:8001に接続し、接続が成功した後に文字列を送信し、受信した文字列を出力します。

ws = new WebSocket("ws://127.0.0.1:8001");
ws.onopen = 関数 (イベント) {
    console.log("テキスト送信WSが開かれました。");
};
ws.onmessage = 関数 (イベント) {
    console.log("応答テキストメッセージ: " + event.data);
};
ws.onerror = 関数 (イベント) {
    console.log("テキストの送信でエラーが発生しました");
};
ws.onclose = 関数 (イベント) {
    console.log("WebSocketインスタンスが閉じられました。");
};
 
setTimeout(関数() {
    ws.readyState === WebSocket.OPEN の場合 {
        console.log("WebSocket がメッセージの送信を開始しました。");
        ws.send("Hello WebSocket、テキストメッセージです。");
    }
    それ以外 {
        console.log("WebSocketインスタンスの準備ができていませんでした...");
    }
}, 3000);

Nodejs サーバー:

文字列を正常に受信したら、受信したデータを出力し、文字列を返します。

var ws = require("nodejs-websocket");
  
console.log("Websocketの作成を開始します");
var server = ws.createServer(function(conn){
    console.log("接続に成功しました");
    conn.on("テキスト", 関数(obj) {
       console.log("受信:",obj);
        conn.send("サーバーからメッセージが届きました");     
          
    })
    conn.on("close", 関数(コード, 理由) {
        console.log("接続を閉じる")
    });
    conn.on("エラー", 関数(コード, 理由) {
        console.log("異常終了")
    });
}).listen(8001)
console.log("Websocketの作成を開始します");

テスト結果、クライアント ブラウザー出力:

nodejs 側の出力:

4. Egretのhttpとwebsocketをcocosに移植する

cocos にはカプセル化ツールクラスがないため、Egret から http と websocket を cocos に直接移植して使用すると非常に便利です。

以上がCocos CreatorのHttpとWebSocketの詳しい内容です。Cocos Creatorの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • Unity3Dはカメラレンズの動きを実現し、角度を制限する
  • CocosCreatorで複数のタイマーを使用する方法の詳細な説明
  • CocosCreator 学習モジュールスクリプト
  • CocosCreator で物理エンジン ジョイントを使用する方法
  • CocosCreatorでJSZip圧縮を使用する方法
  • CocosCreator 入門チュートリアル: TS で初めてのゲームを作る
  • CocosCreator ソースコードの解釈: エンジンの起動とメインループ
  • CocosCreator 一般的なフレームワーク設計リソース管理
  • CocosCreatorでリストを作成する方法
  • CocosCreator の新しいリソース管理システムの分析
  • CocosCreator でカメラトラッキングに cc.follow を使用する方法

<<:  MySQLプリコンパイル機能の詳細な説明

>>:  Dockerコンテナアプリケーションログの表示方法

推薦する

HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

背景検索エンジンで「.htaccess キャッシュ」というキーワードを検索すると、ウェブサイトのファ...

シェルスクリプト nginx 自動化スクリプト

このスクリプトは、nginxの起動、停止、再起動の操作を満たすことができます。 #!/bin/bas...

HTML ウェブページ画像タグ

画像タグ <IMG> を挿入します。今日私たちが目にするカラフルなウェブページはすべて、...

3つの主要データベース(Mysql、SqlServer、Oracle)の違いについて簡単に説明します。

マイグレーションアドバンテージ:小型、高速、総所有コストが低い、オープンソース。複数のオペレーティン...

MySQL クラスタの詳細な説明: 1 つのマスターと複数のスレーブのアーキテクチャ実装

実験環境: 1. CentOS 7 サーバー 3 台2. mysql5.7.26 (3台のマシンはす...

Vue プロジェクトでブラウザ キャッシュ設定を無効にする例

プロジェクトをリリースするときに、キャッシュをクリーンアップする必要があるという問題に遭遇することが...

MySQL データベースの必須条件クエリ ステートメント

目次1. 基本的な文法2. 条件式によるフィルタリング3. 論理式によるフィルタリング4. あいまい...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

テーブルを作成するための MySQL SQL ステートメントの詳細な概要

mysql テーブル作成 SQL ステートメントMySQL テーブルを作成するための一般的な SQL...

Nginx 転送ソケットポート設定の詳細な説明

Nginx によるソケット ポート転送の一般的なシナリオ: オンライン学習アプリケーションでは、通常...

Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...

Windows 10 での Tomcat のインストールと展開に関する詳細なチュートリアル

目次1 Java環境の設定2 tomcatのインストールと展開Tomcat をインストールして展開す...

データベースミドルウェアMyCatの紹介

1. Mycatの適用シナリオMycat は幅広いシナリオに合わせて開発されており、新しいユーザーが...

VMWare仮想マシンのcentosの時間が現地時間と矛盾する問題を解決する

VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...

ブラウザの自動更新を実装するReactサンプルコード

目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...