您好,登錄后才能下訂單哦!
使用pomelo做服務端開發時,無論什么客戶端,只要能遵循與服務端的線上協議,就能夠與服務端建立通信。pomelo內建提供的sioconnector和hybridconnector都定義了自己的協議格式,其中sioconnector用于socket.io的通信,hybridconnector則用來處理websocket和tcp的連接通信。為了方便客戶端的開發,pomelo提供了部分平臺的客戶端SDK,主要包括用于Web端的JavaScript的SDK以及基于C/C++語言開發的libpomelo的使用。
【補充】hybrid意思是雜交,在此hybridconnector是指高級connector。我們知道,connector在pomelo架構中負責承擔與客戶端的網絡通信任務。為了理解hybrid一詞,看一個小故事:帶有HYBRID標識的車型,都是指混合動力汽車,即有內燃機和電力混合驅動的車輛;顯然這類車是指同類車中的高級型。新型瀏覽器都會支持HTML5格式網頁設計,自然hybridconnector對應用來處理websocket(新一代)和tcp類型的連接通信。
Web端JavaScript開發庫
對于瀏覽器來說,HTML5中已經支持了websocket,因此使用支持websocket的瀏覽器可以直接與服務端的hybridconnector建立通信。而對于比較舊的瀏覽器來說,還沒有支持websocket的,可以使用基于socket.io的方式進行與服務端建立連接。因此,對于Web端,pomelo提供了兩套開發庫,分別適用于支持websocket的瀏覽器和不支持websocket的瀏覽器,這兩套開發庫的鏈接如下,適用于socket.io的pomelo-jsclient-socket.io以及適用于websocket的pomelo-jsclient-websocket。
web端API簡介
無論是socket.io的還是websocket的,都提供了統一的API,下面對這些API進行簡單的介紹。
pomelo.init(params, cb)
這是往往是客戶端的第一次調用,params中應該指出要連接的服務器的ip和端口號,cb會在連接成功后進行回調;
pomelo.request(route, msg, cb)
請求服務,route為服務端的路由,格式為"..", msg為請求的內容,cb會響應回來后的回調;
pomelo.notify(route, msg)
發送notify,不需要服務器回響應的,因此沒有對響應的回調,其他參數含義同request;
pomelo.on(route, cb)
這個是從EventEmmiter繼承過來的方法,用來對服務端的推送作出響應的。route會用戶自定義的,格式一般為"onXXX";
pomelo.disconnect()
這個是pomelo主動斷開連接的方法。
chatofpomelo-websocket實例客戶端相關代碼
網易的chatofpomelo-websocket示例盡管展示了一個簡單的基于客戶端瀏覽器的聊天網絡程序,但是對于理解POMELO架構具有重要意義。下面,我們簡單列舉出客戶端關鍵腳本client.js中相應于上面的API相關代碼。
function queryEntry(uid, callback) { var route = 'gate.gateHandler.queryEntry'; pomelo.init({ host: window.location.hostname, port: 3014, log: true }, function() { pomelo.request(route, { uid: uid }, function(data) { pomelo.disconnect(); if(data.code === 500) { showError(LOGIN_ERROR); return; } callback(data.host, data.port); }); }); };
pomelo.on('onChat', function(data) { addMessage(data.from, data.target, data.msg); $("#chatHistory").show(); if(data.from !== username) tip('message', data.from); }); 在此恕不作細致介紹上面代碼了。但是,提供一下,要理解上面代碼你必須有一點基于jQuery的前端網頁開發經驗。
小結
從網易的chatofpomelo-websocket示例來看,網易pomelo提供的基于WEB的前面API封裝性強,易于使用。只可憐我目前還沒有打開選擇使用基于Web網頁形式的網游開發。但是,我們對基于C/C++語言開發的libpomelo的使用更感興趣,在后面的文章中我會選擇時機介紹這方面的案例文章。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。