WebSocket 開發模擬客戶端與有游戲服務器通信


WebSocket 客戶端測試功能

  websocket是有標准的通信協議,在h2engine服務器引擎中繼承了websocket通信協議,使用websocket通信協議的好處是很多語言或框架都內置了websocket的支持,工具也非常多,可以非常方便的測試。比如在邏輯開發過程中,有時候協議定好了,但是由於客戶端還沒有及時完成相應功能,那么如果有個模擬的客戶端就會非常的方便,這個模擬的客戶端只要能夠收發協議就好。websocket瀏覽器天然支持,所以用瀏覽器websocket實現模擬客戶端非常的方便,使用的人直接省掉了按照客戶端的麻煩,直接放到一個webserver上,所有人都能用。

WebSocket 與服務器通信實現

  協議設計,websocket與h2engine服務器引擎通信,協議頭的格式是cmd:協議號(整型)\n數據,這里參考了http頭的協議設計,以\n區別協議頭和協議體,協議頭可以有多個參數,逗號分隔,這里只用了cmd,保留了其他協議參數的能力。用字符串的協議頭對js這種腳本語言更友好,更容易兼容其他語言。

var ws = undefined;
var gHost = '';
function Log(Text, MessageType) {
    if (MessageType == "OK") 
        Text = "<span style='color: green;'>" + Text + "</span>";
    else if (MessageType == "ERROR") 
        Text = "<span style='color: red;'>" + Text + "</span>";
    else if (MessageType == "SEND") 
        Text = "<span style='color: orange;'>" + Text + "</span>";
    document.getElementById("LogContainer").innerHTML = document.getElementById("LogContainer").innerHTML + Text + "<br />";
    var LogContainer = document.getElementById("LogContainer");
    LogContainer.scrollTop = LogContainer.scrollHeight;
};
function btnConnect(){
    if (ws){
        Log("連接已經建立!!。", "ERROR");
        return;
    }
    gHost = document.getElementById("ip").value + ":" + document.getElementById("port").value;
    Log("begin connect:"+gHost)
    gHost +=  "/chat";
    if ("WebSocket" in window) {
        ws = new WebSocket("ws://" + gHost);
    }
    else if("MozWebSocket" in window) {
        ws = new MozWebSocket("ws://" + gHost);
    }
    ws.onopen    = WSonOpen;
    ws.onmessage = WSonMessage;
    ws.onclose   = WSonClose;
    ws.onerror   = WSonError;
}
function btnClose(){
    if (ws)
        ws.close();
}
function WSonOpen() {
    Log("連接已經建立。", "OK");
};
function btnSend(){
    var cmdReq  = $('#cmdSelect').val();
    var dataReq = $('#dataReq').val();
    var reqMsg   = 'cmd:' + cmdReq + '\n'+dataReq;
    ws.send(reqMsg);
}

WebSocket 基於瀏覽器實現的模擬客戶端截圖

  1. ip port 設置服務器ip端口
  2. 協議號用於填寫協議號,整型
  3. 協議數據這里只是作為延時只輸入字符串,這個正式的應該是根據協議號顯示不同的協議結構,然后根據結構字段分別填寫。

相關連接

更多精彩文章 http://h2cloud.org/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM