中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中使用WebSocket實現一個多人游戲

發布時間:2021-03-30 15:59:54 來源:億速云 閱讀:218 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關怎么在Android中使用WebSocket實現一個多人游戲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

webSocket流程

1、客戶端開始連接------->服務端收到連接(保存客戶端ip)--------->服務端向客戶端發送連接成功消息

2、客戶端發送消息(內容和服務端定義好,一般是json格式)----------服務端收到消息,根據想要的邏輯,決定是否推送給所有連接上的客戶端

3、客戶端收到推送消息,更新UI界面

Android接入

Android接入的話,直接用庫吧,簡單方便,我接入的是這個庫:

compile 'com.koushikdutta.async:androidasync:2.+'

他的調用也很方便

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;
        }
        //接收到消息的監聽
        webSocket.setStringCallback(new WebSocket.StringCallback() {
          @Override
          public void onStringAvailable(String s) {
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                //更新ui界面
              }
            });
          }
        });
        //關閉鏈接的監聽
        webSocket.setClosedCallback(new CompletedCallback() {
          @Override
          public void onCompleted(Exception e) {
          }
        });
        //發送內容到服務端
        webSocket.send("測試測試");
      }
    });

是吧,很簡單,就幾個方法。下面開始說說,如何用websocket來搞多人游戲的思路,不過,我還沒去試過啊,只是理論上的一種思路,應該可行,哈哈。

websocket開發多人游戲

簡單點,我們搞一個像王者農藥一樣的,就是10個人在畫面上,左5個,右5個,這就意味著有10個客戶端啦,當客戶端點擊移動按鈕,對應的人物在畫面上就相應移動一點,當然,是10個客戶端同時變化,你移動了,其他人也會看到你移動。那些打斗啊什么鬼的,我們先不管,我們先做好移動,其他的思路應該差不多。開始:

1、客戶端開始連接服務端:發送姓名,服務端記錄好這些信息。

 webSocket.send("{"code":1,"name":"A用戶"}");
 webSocket.send("{"code":1,"name":"B用戶"}");
 ·······
 webSocket.send("{"code":1,"name":"J用戶"}");

2、服務端邏輯處理,當有10個人鏈接成功后,證明比賽要開始了,初始化10個玩家的位置,推送消息給所有玩家:

怎么在Android中使用WebSocket實現一個多人游戲

服務端推送的消息

正常來說,客戶端在這個方法接收到上面的推送消息:

 //接收到消息的監聽
        webSocket.setStringCallback(new WebSocket.StringCallback() {
          @Override
          public void onStringAvailable(String s) {
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                //更新ui界面,把10個玩家的信息和位置顯示在界面上
              }
            });
          }
        });

3、吶,現在10個玩家的位置都初始化了。然后,玩家開始移動,比如說A用戶移動到100.100的位置,那客戶端就發送:

webSocket.send("{"code":0,"name":"A用戶","x":100,"y":100}");

4、服務端收到客戶端發送的命令后,就根據內容更新列表啦,這時,A用戶的位置就是改為100.100了。然后推送新的游戲信息給所有的客戶端,客戶端收到命令后,同樣是更新界面,這時A用戶的位置就改變啦。

怎么在Android中使用WebSocket實現一個多人游戲

看完上述內容,你們對怎么在Android中使用WebSocket實現一個多人游戲有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 长宁县| 长子县| 灯塔市| 临武县| 衡阳市| 日土县| 阿图什市| 彩票| 临漳县| 赞皇县| 务川| 红安县| 宁晋县| 梧州市| 长春市| 富平县| 阜城县| 宜城市| 昌宁县| 兰坪| 银川市| 遵化市| 定州市| 建湖县| 广丰县| 潜山县| 益阳市| 鲁山县| 海门市| 苍南县| 海口市| 兴国县| 广西| 宽城| 红河县| 葫芦岛市| 深泽县| 即墨市| 泽州县| 梅州市|