2016-06-19 6 views
-2

私は次のエラーを取得:サーバー上のJSON.parse()JavaScriptの予期しないトークン{

undefined:2 
{"data":{"my":88.43869018554688,"mx":-293.594970703125},"id":2} 
^ 
SyntaxError: Unexpected token { 
    at Object.parse (native) 
    at Socket.<anonymous>(/home/lchost/fishy.io/server/custom_modules/game.js:34:23) 

私のコード:アンドロイドクライアント上

socket.on('data', function(data) { 
    console.log(data.toString()); 
    var json = JSON.parse(data.toString()); 
    ... 

コード:

public class TouchEventObject implements JSONable { 

public float mx; 
public float my; 

public TouchEventObject(float mx, float my) { 
    this.mx = mx; 
    this.my = my; 
} 

@Override 
public JSONObject toJSON() { 
    JSONObject json = new JSONObject(); 
    try { 
     json.put("mx", mx); 
     json.put("my", my); 
    } catch(Exception e) {}; 
    return json; 
} 
} 

をし、 :

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    if(world != null && me != null && canvas_width != -1 && canvas_height != -1) { 
     Camera camera = Camera.getInstance(); 
     float x = camera.getX() <= 0 ? event.getX() - me.x*camera.getScale() : camera.getX() >= world.WIDTH - canvas_width ? ((world.WIDTH - canvas_width) + event.getX()) - me.x*camera.getScale() : event.getX() - canvas_width/2; 
     float y = camera.getY() <= 0 ? event.getY() - me.y*camera.getScale() : camera.getY() >= world.HEIGHT - canvas_height ? ((world.HEIGHT - canvas_height) + event.getY()) - me.y*camera.getScale() : event.getY() - canvas_height/2; 

     if (client != null && client.isConnected()) { 
      JSONObject json = new TouchEventObject(x, y).toJSON(); 
      client.sendMessage(PacketType.MOUSEMOVE, json); 
     } 
    } 

    return true; 
} 

何が問題なのか? これは本当に奇妙です。これは何度もエラーが発生しないが、3または4がソケット転送を正常に処理した後に失敗するためです。 ありがとうございます。

+0

は、なぜあなたは[ジャバスクリプト] .. – nicael

+2

JSON文字列+ JSON文字列でそれをタグ付けします! =有効なJSON。一度に2つのJSON文字列を解析することはできません。 –

+0

'console.log(data.toString());の出力は何ですか? – mhu

答えて

0

実際に@Mr。ラマは正しかった。私のコードは、単に一つのメッセージで2 JSONsを送った...私はタッチイベントを処理するコードにThread.sleep(100)を入れている:?

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    if(world != null && me != null && canvas_width != -1 && canvas_height != -1) { 
     Camera camera = Camera.getInstance(); 
     float x = camera.getX() <= 0 ? event.getX() - me.x*camera.getScale() : camera.getX() >= world.WIDTH - canvas_width ? ((world.WIDTH - canvas_width) + event.getX()) - me.x*camera.getScale() : event.getX() - canvas_width/2; 
     float y = camera.getY() <= 0 ? event.getY() - me.y*camera.getScale() : camera.getY() >= world.HEIGHT - canvas_height ? ((world.HEIGHT - canvas_height) + event.getY()) - me.y*camera.getScale() : event.getY() - canvas_height/2; 

     if (client != null && client.isConnected()) { 
      JSONObject json = new TouchEventObject(x, y).toJSON(); 
      client.sendMessage(PacketType.MOUSEMOVE, json); 
      try { 
       Thread.sleep(100); 
      } catch(Exception e) {} 
     } 
    } 

    return true; 
} 
関連する問題