您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)怎么在Android中使用WebSocket實現(xiàn)一個多人游戲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
webSocket流程
1、客戶端開始連接------->服務(wù)端收到連接(保存客戶端ip)--------->服務(wù)端向客戶端發(fā)送連接成功消息
2、客戶端發(fā)送消息(內(nèi)容和服務(wù)端定義好,一般是json格式)----------服務(wù)端收到消息,根據(jù)想要的邏輯,決定是否推送給所有連接上的客戶端
3、客戶端收到推送消息,更新UI界面
Android接入
Android接入的話,直接用庫吧,簡單方便,我接入的是這個庫:
compile 'com.koushikdutta.async:androidasync:2.+'
他的調(diào)用也很方便
AsyncHttpClient.getDefaultInstance().websocket("ws://test.ling.com:9588/", "9588", new AsyncHttpClient.WebSocketConnectCallback() { @Override public void onCompleted(Exception e, WebSocket webSocket) { if (e != null) { e.printStackTrace(); return; } //接收到消息的監(jiān)聽 webSocket.setStringCallback(new WebSocket.StringCallback() { @Override public void onStringAvailable(String s) { runOnUiThread(new Runnable() { @Override public void run() { //更新ui界面 } }); } }); //關(guān)閉鏈接的監(jiān)聽 webSocket.setClosedCallback(new CompletedCallback() { @Override public void onCompleted(Exception e) { } }); //發(fā)送內(nèi)容到服務(wù)端 webSocket.send("測試測試"); } });
是吧,很簡單,就幾個方法。下面開始說說,如何用websocket來搞多人游戲的思路,不過,我還沒去試過啊,只是理論上的一種思路,應(yīng)該可行,哈哈。
websocket開發(fā)多人游戲
簡單點,我們搞一個像王者農(nóng)藥一樣的,就是10個人在畫面上,左5個,右5個,這就意味著有10個客戶端啦,當(dāng)客戶端點擊移動按鈕,對應(yīng)的人物在畫面上就相應(yīng)移動一點,當(dāng)然,是10個客戶端同時變化,你移動了,其他人也會看到你移動。那些打斗啊什么鬼的,我們先不管,我們先做好移動,其他的思路應(yīng)該差不多。開始:
1、客戶端開始連接服務(wù)端:發(fā)送姓名,服務(wù)端記錄好這些信息。
webSocket.send("{"code":1,"name":"A用戶"}"); webSocket.send("{"code":1,"name":"B用戶"}"); ······· webSocket.send("{"code":1,"name":"J用戶"}");
2、服務(wù)端邏輯處理,當(dāng)有10個人鏈接成功后,證明比賽要開始了,初始化10個玩家的位置,推送消息給所有玩家:
服務(wù)端推送的消息
正常來說,客戶端在這個方法接收到上面的推送消息:
//接收到消息的監(jiān)聽 webSocket.setStringCallback(new WebSocket.StringCallback() { @Override public void onStringAvailable(String s) { runOnUiThread(new Runnable() { @Override public void run() { //更新ui界面,把10個玩家的信息和位置顯示在界面上 } }); } });
3、吶,現(xiàn)在10個玩家的位置都初始化了。然后,玩家開始移動,比如說A用戶移動到100.100的位置,那客戶端就發(fā)送:
webSocket.send("{"code":0,"name":"A用戶","x":100,"y":100}");
4、服務(wù)端收到客戶端發(fā)送的命令后,就根據(jù)內(nèi)容更新列表啦,這時,A用戶的位置就是改為100.100了。然后推送新的游戲信息給所有的客戶端,客戶端收到命令后,同樣是更新界面,這時A用戶的位置就改變啦。
看完上述內(nèi)容,你們對怎么在Android中使用WebSocket實現(xiàn)一個多人游戲有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。