Android Websockets onMessage()永远不会被调用,即使连接成功

9
我正在使用WebSockets制作多人游戏,需要在服务器之间发送多种类型的数据。但是当我连接到服务器时,它应该通过WebSocket库从连接中返回一个名称和数字("type")以及("data")。对于游戏逻辑实际工作而言,我不需要"type",但("data")是至关重要的。
下面是我在WebSockets onMessage()函数中的代码:
@Override
public void onMessage(String message)
{                       
    try 
    {
         JSONObject json = new JSONObject(message);
         if(json.has("type") && json.has("data"))
         {
             Log.d(TAG, json.getString("type"));
             Log.d(TAG, json.getString("data"));
             playerNum = Integer.parseInt(json.getString("data"));
             Log.d(TAG,"Received... Type : " +json.getString("type")+" Data : "+json.getString("data"));
         }
         if(json.has("Player1TurnOver"))
         {
             player1TurnOver = json.getBoolean("Player1TurnOver");
         }

         if(json.has("Word"))
         {
            String b = json.getString("Word");
            bWord = new char[b.length()];
            for(int i = 0; i < b.length(); i++)
            {
                 bWord[i] = b.charAt(i);
            }
         wordLength = bWord.length;
        }
     }
     catch(JSONException e)         
     {                  
     }              
}

但是,即使客户端有一个类似的监听器,服务器也从未调用它:

mClient = new WebSocketClient(URI.create("ws://some_ip:8080/wstest"), new WebSocketClient.Listener()){

监听器在 WebSocket 库类中初始化。

public interface Listener {
    public void onConnect();
    public void onMessage(String message);
    public void onMessage(byte[] data);
    public void onDisconnect(int code, String reason);
    public void onError(Exception error);
}

我似乎无法弄清楚为什么这个不正常工作。因为它之前是可以工作的...


你在服务器端使用Node.js吗? - Nikunj Peerbits
1个回答

1
有时设备失去互联网连接时无法正确检测到(在这种情况下,Java不够聪明;))。
除此之外,请使用WebSocketImpl.DEBUG = true;激活调试输出。
该库将自动在特定间隔向终端发送ping,如果未收到ping,则假定终端已断开连接!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接