使用pomelo做服務端開發(fā)時,無論什么客戶端,只要能遵循與服務端的線上協(xié)議,就能夠與服務端建立通信。pomelo內(nèi)建提供的sioconnector和hybridconnector都定義了自己的協(xié)議格式,其中sioconnector用于socket.io的通信,hybridconnector則用來處理websocket和tcp的連接通信。為了方便客戶端的開發(fā),pomelo提供了部分平臺的客戶端SDK,主要包括用于Web端的JavaScript的SDK以及基于C/C++語言開發(fā)的libpomelo的使用。
【補充】hybrid意思是雜交,在此hybridconnector是指高級connector。我們知道,connector在pomelo架構(gòu)中負責承擔與客戶端的網(wǎng)絡通信任務。為了理解hybrid一詞,看一個小故事:帶有HYBRID標識的車型,都是指混合動力汽車,即有內(nèi)燃機和電力混合驅(qū)動的車輛;顯然這類車是指同類車中的高級型。新型瀏覽器都會支持HTML5格式網(wǎng)頁設計,自然hybridconnector對應用來處理websocket(新一代)和tcp類型的連接通信。
Web端JavaScript開發(fā)庫
對于瀏覽器來說,HTML5中已經(jīng)支持了websocket,因此使用支持websocket的瀏覽器可以直接與服務端的hybridconnector建立通信。而對于比較舊的瀏覽器來說,還沒有支持websocket的,可以使用基于socket.io的方式進行與服務端建立連接。因此,對于Web端,pomelo提供了兩套開發(fā)庫,分別適用于支持websocket的瀏覽器和不支持websocket的瀏覽器,這兩套開發(fā)庫的鏈接如下,適用于socket.io的pomelo-jsclient-socket.io以及適用于websocket的pomelo-jsclient-websocket。
web端API簡介
無論是socket.io的還是websocket的,都提供了統(tǒng)一的API,下面對這些API進行簡單的介紹。
pomelo.init(params, cb)
這是往往是客戶端的第一次調(diào)用,params中應該指出要連接的服務器的ip和端口號,cb會在連接成功后進行回調(diào);
pomelo.request(route, msg, cb)
請求服務,route為服務端的路由,格式為"..", msg為請求的內(nèi)容,cb會響應回來后的回調(diào);
pomelo.notify(route, msg)
發(fā)送notify,不需要服務器回響應的,因此沒有對響應的回調(diào),其他參數(shù)含義同request;
pomelo.on(route, cb)
這個是從EventEmmiter繼承過來的方法,用來對服務端的推送作出響應的。route會用戶自定義的,格式一般為"onXXX";
pomelo.disconnect()
這個是pomelo主動斷開連接的方法。
chatofpomelo-websocket實例客戶端相關代碼
網(wǎng)易的chatofpomelo-websocket示例盡管展示了一個簡單的基于客戶端瀏覽器的聊天網(wǎng)絡程序,但是對于理解POMELO架構(gòu)具有重要意義。下面,我們簡單列舉出客戶端關鍵腳本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的前端網(wǎng)頁開發(fā)經(jīng)驗。
小結(jié)
從網(wǎng)易的chatofpomelo-websocket示例來看,網(wǎng)易pomelo提供的基于WEB的前面API封裝性強,易于使用。只可憐我目前還沒有打開選擇使用基于Web網(wǎng)頁形式的網(wǎng)游開發(fā)。但是,我們對基于C/C++語言開發(fā)的libpomelo的使用更感興趣,在后面的文章中我會選擇時機介紹這方面的案例文章。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
新聞標題:Pomelo開發(fā)中Web客戶端開發(fā)API簡介-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article24/diseje.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、ChatGPT、全網(wǎng)營銷推廣、網(wǎng)站營銷、小程序開發(fā)、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)