本文出自 Eddy Wiki 础钠,轉(zhuǎn)載請注明出處:http://eddy.wiki/creator-pomelo.html
本文主要介紹怎么在 CocosCreator 中集成 Pomelo坯沪, 以及使用CocosCreattor + Pomelo 開發(fā)一個多人聊天應(yīng)用马篮。
使用 Pomelo 官方多人聊天 demo(下文統(tǒng)一稱為 pomelo-chat-demo)的服務(wù)端代碼作為本多人聊天應(yīng)用的服務(wù)端穴豫,而本聊天應(yīng)用客戶端(下文統(tǒng)一稱為 ccc-pomelo-chat-client)則是參考 pomelo-chat-demo 的web客戶端使用CocosCreattor實(shí)現(xiàn)皮钠。
怎么運(yùn)行ccc-pomelo-chat-client
本人開發(fā)環(huán)境
CocosCreator 1.1, Pomelo 1.2.2, MacOS 10.10.3
安裝 pomelo
參考 安裝 pomelo wiki 安裝 pomelo捶索。
pomelo-chat-demo 源碼下載與運(yùn)行
ccc-pomelo-chat-client 服務(wù)端使用的是 pomelo-chat-demo 的服務(wù)端因妇,并沒有另外開發(fā)欲逃,這樣可以很方便的展示多人聊天應(yīng)用的多端(Web, Android, desktop等)聊天通訊功能找蜜。
參考 pomelo chat 源碼下載與安裝 wiki 下載 pomelo-chat-demo 源碼。
下載源碼后稳析,通過下列步驟來運(yùn)行 pomelo-chat-demo洗做。下文使用 yourdir
指代你本地 pomelo-chat-demo 源碼的存放目錄。
打開終端彰居,啟動 pomelo-chat-demo 的聊天服務(wù)器诚纸。
$ cd yourdir/chatofpomelo-websocket/game-server
$ pomelo start
打開另外一個終端,啟動 pomelo-chat-demo 的 web 服務(wù)器陈惰。
$ cd yourdir/chatofpomelo-websocket/web-server
$ node app.js
如果啟動過程中沒有錯誤畦徘,那么我們就可以打開瀏覽器,輸入 http://127.0.0.1:3001/index.html, 然后就可以看到聊天應(yīng)用的界面了抬闯。輸入一個用戶名和一個房間名井辆,就可以開始聊天了∪芪眨可以多開幾個客戶端實(shí)例(即打開多個網(wǎng)頁)杯缺,測試 pomelo-chat-demo 是否能正常地運(yùn)行。效果圖如下:
那么怎么關(guān)閉 pomelo-chat-demo 的聊天服務(wù)器呢睡榆,其實(shí)很簡單萍肆。打開另外一個終端
$ cd yourdir/chatofpomelo-websocket/game-server
$ pomelo stop 或 pomelo kill
注意:如果不是按以上步驟關(guān)閉聊天服務(wù)器,那么當(dāng)你再次啟動聊天服務(wù)器的時候胀屿,就有可能因?yàn)榱奶旆?wù)器未完全關(guān)閉而出現(xiàn)錯誤塘揣。出現(xiàn)這種情況可以直接關(guān)閉啟動聊天服務(wù)器的終端(這樣聊天服務(wù)器就被完全關(guān)閉了),然后重新打一個終端啟動聊天服務(wù)器宿崭。
ccc-pomelo-chat-client源碼下載與運(yùn)行
下文使用 yourdir
指代你本地 ccc-pomelo-chat-client 源碼的存放目錄亲铡。
從GitHub上下載 ccc-pomelo-chat-client 源碼。
$ cd yourdir
$ git clone https://github.com/eddy2015/ccc-pomelo-chat-client.git
使用 CocosCreator 打開 ccc-pomelo-chat-client 項(xiàng)目并運(yùn)行預(yù)覽(模擬器和瀏覽器都行)葡兑,效果圖如下:
經(jīng)本人測試奴愉,該客戶端在web、Android铁孵、ccc模擬器都可以正常運(yùn)行,其他平臺請自行嘗試房资。服務(wù)器 ip 地址默認(rèn)為 127.0.0.1蜕劝,如果你是在 Android 等其他不和服務(wù)器同一臺機(jī)器平臺運(yùn)行,請把該 ip 修改成你啟動服務(wù)器的電腦 ip 地址。端口默認(rèn)為 3014岖沛,這個一般不需要修改暑始,除非你改動了服務(wù)器端的代碼。輸入一個用戶名和一個房間名(用戶名和房間名限制了只能是字母婴削、數(shù)字廊镜、或漢字),然后點(diǎn)擊 join 按鈕登陸后就可以進(jìn)行一對多或者一對一聊天了唉俗。
CocosCreator 怎么集成 pomelo
集成 pomelo 步驟
下載 ccc-pomelo-chat-client 源碼嗤朴,把源碼中的 ccc-pomelo-chat-client/assets/pomelo
拷貝到你的 CocosCreator 項(xiàng)目 assets 目錄下,這樣在你的項(xiàng)目中即可使用 pomelo-client 相關(guān) API 了虫溜。
API請閱讀 pomelo/pomelo-client.js
源碼雹姊,具體使用方法可以參考 ccc-pomelo-chat-client 源碼,或者參考以下網(wǎng)址:
集成后的會出現(xiàn)的一些警告
CocosCreator 項(xiàng)目集成 pomelo 后衡楞,你會在 CocosCreator 編輯器中看到如下的紅色錯誤信息:
Simulator : mutating the [[Prototype]] of an object will cause your code to run very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create
at a: "Buffer.prototype.__proto__ = Uint8Array.prototype" (../../../../../../../Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/buffer/index.js:153)
或者在 web 上運(yùn)行時吱雏,看到下列警告信息:
mutating the [[Prototype]] of an object will cause your code to run very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create
以上的警告信息并不影響 pomelo 的使用。由于本人水平有限瘾境,所以暫時沒有解決該警告問題歧杏,如果各位有解決方法,請指出迷守。
該 CocosCreator pomelo 庫由來
由于前一段時間對 pomelo 比較感興趣犬绒,所有就去了解了一下。最近也一直在關(guān)注 CocosCreator盒犹,看到論壇有不少人問 CocosCreator 是否能集成pomelo懂更。根據(jù)我個人的理解:CocosCreator 實(shí)現(xiàn)了 websocket 的跨平臺封裝;而 pomelo 也有基于 websocket 的客戶端實(shí)例急膀。因此沮协,CocosCreator 集成 pomelo 應(yīng)該不會有什么問題的。剛好端午節(jié)有空就嘗試集成了一下卓嫂,然后就有了這篇文章和 ccc-pomelo-chat-client慷暂。
ccc-pomelo-chat-client 中的 pomelo 庫生成過程:
- 拷貝
chatofpomelo-websocket/web-server/public/js/lib/components/component-emitter/index.js
文件并修改文件名為 emitter.js,在 emitter.js 文件的module.exports = Emitter;
代碼后面添加window.EventEmitter = Emitter;
代碼晨雳。 - 拷貝
chatofpomelo-websocket/web-server/public/js/lib/components/NetEase-pomelo-protocol/lib/protocol.js
文件行瑞。 - 拷貝
chatofpomelo-websocket/web-server/public/js/lib/components/pomelonode-pomelo-protobuf/lib/client/protobuf.js
文件。 - 拷貝
chatofpomelo-websocket/web-server/public/js/lib/components/pomelonode-pomelo-jsclient-websocket/lib/pomelo-client.js
文件餐禁,并使用 cc.log血久、 cc.error 替換文件中的 console.log、console.error帮非。
最后
這是我博客的第一篇博文(除了 HelloWord 外_)氧吐,希望大家喜歡讹蘑。由于本人水平有限,文章中難免錯漏之處筑舅,請各位不吝指正座慰。