어떻게 CocosCreator 에서 http 와 WebSocket 을 사용 합 니까?

CocosCreator 버 전 2.3.4
HttpGET
Get 방식,클 라 이언 트 는 이 컴퓨터 의 주소 3000 포트 를 요청 하고 매개 변수 url 과 name 을 휴대 하 며 서버 에서 받 은 후에 name 인 자 를 되 돌려 줍 니 다.
cocos 클 라 이언 트:

//    
let url = "http://127.0.0.1:3000/?url=123&name=321";
//  Http
let xhr = new XMLHttpRequest();
//    
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
        var response = xhr.responseText;
        console.log(response);
    }
};
//    
xhr.onerror = function(evt){
    console.log(evt);
}
//       ,GET  ,true    
xhr.open("GET", url, true);
//    
xhr.send();
테스트 를 편리 하 게 하기 위해 서 이 컴퓨터 는 nodejs 로 간단 한 서버 를 구축 하고 방문 을 받 은 후에 요청 매개 변수 중의 name 값 을 되 돌려 줍 니 다.
nodejs 서버:

var app = require('express')(); 
var http = require('http').Server(app);  
 
 
app.get('/', function(req, res){ 
    //         ,*          
    res.header("Access-Control-Allow-Origin","*");
    //   header  
    res.header("Access-Control-Allow-Headers","content-type");
    //         
    res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
    res.send(req.query.name); 
}); 
   
http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
});
nodejs 서버 를 실행 하고 cocos 코드,cocos 를 실행 합 니 다.

console.log(response);   //   321
2.HTTPPOST
클 라 이언 트 요청 서버,인자 name,서버 에서 받 은 후 name 을 되 돌려 줍 니 다.
cocos 클 라 이언 트:

let url = "http://127.0.0.1:3000/";
let xhr = new XMLHttpRequest();
 
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
        var response = xhr.responseText;
        console.log(response);
    }
};
xhr.onerror = function(evt){
    console.log(evt);
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("name=123");
nodejs 서버:

var app = require('express')(); 
var http = require('http').Server(app);  
var querystring = require('querystring');
 
 
app.post('/', function(req, res){ 
    //         ,*          
    res.header("Access-Control-Allow-Origin","*");
    //   header  
    res.header("Access-Control-Allow-Headers","content-type");
    //         
    res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
     
    var body = "";
     
    req.on('data', function (chunk) {
        body += chunk;  //     +=,  body=chunk,    favicon.ico,body   {}
        console.log("chunk:",chunk);
    });
     
    req.on('end', function () {
        body = querystring.parse(body);
        console.log("body:",body);
        res.send(body.name);
    });
}); 
   
http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
});
cocos 출력

console.log(response);  //  123
3.웹 소켓
cocos 클 라 이언 트 코드:
로 컬 서버 127.0.0.1:8001 연결 에 성공 하면 문자열 을 보 내 고 받 은 문자열 을 인쇄 합 니 다.

let ws = new WebSocket("ws://127.0.0.1:8001");
ws.onopen = function (event) {
    console.log("Send Text WS was opened.");
};
ws.onmessage = function (event) {
    console.log("response text msg: " + event.data);
};
ws.onerror = function (event) {
    console.log("Send Text fired an error");
};
ws.onclose = function (event) {
    console.log("WebSocket instance closed.");
};
 
setTimeout(function () {
    if (ws.readyState === WebSocket.OPEN) {
        console.log("WebSocket start send message.");
        ws.send("Hello WebSocket, I'm a text message.");
    }
    else {
        console.log("WebSocket instance wasn't ready...");
    }
}, 3000);
nodejs 서버:
문자열 을 받 은 후 받 은 데 이 터 를 인쇄 하고 문자열 을 되 돌려 줍 니 다.

var ws = require("nodejs-websocket");
  
console.log("    websocket");
var server = ws.createServer(function(conn){
    console.log("    ");
    conn.on("text", function (obj) {
       console.log("  :",obj);
        conn.send("message come from server");     
          
    })
    conn.on("close", function (code, reason) {
        console.log("    ")
    });
    conn.on("error", function (code, reason) {
        console.log("    ")
    });
}).listen(8001)
console.log("    websocket  ");
테스트 결과,클 라 이언 트 브 라 우 저 출력:

nodejs 엔 드 출력:

4.Egret 의 http 와 websocket 을 cocos 에 이식 합 니 다.
cocos 는 패키지 도구 류 가 없 기 때문에 Egret 에서 http 와 websocket 을 직접 이식 하여 cocos 에 사용 하 는 것 이 편리 하 다.

이상 은 바로 Cocos Creator 의 Http 와 WebSocke 의 상세 한 내용 입 니 다.더 많은 Cocos Creator 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기