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