即使在连接上也不会调用Android Websockets onMessage()

时间:2014-03-15 16:20:31

标签: java android websocket client andengine

我使用websockets进行多人游戏,我需要在服务器上发送多种类型的数据,但是当我连接到服务器时,它应该发回一个名称和号码(&# 34;分别从连接上的websocket库输入")和(" 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);
}

我似乎无法弄清楚为什么它不能正常工作。因为它以前工作过......

1 个答案:

答案 0 :(得分:0)

有时在设备丢失互联网连接时没有正确检测到(在这种情况下Java并不那么聪明;)

除此之外。您可以使用WebSocketImpl.DEBUG = true;

激活调试打印输出

lib将以特定间隔自动发送ping到端点,如果没有收到ping,则假定端点断开连接!