1

私はsocket.io(Java側のmrniko/netty-socket.ioサーバーとクライアント側のsocket.io.js)で作業しています。問題は、データを受信して​​表示した後、クライアントからサーバーにjsonオブジェクトを送信するときです。面白い文字列データは問題ありませんが(つまり、送信と受信)、「データ処理中にエラーが発生しました」というエラーが発生します。私が何か間違ったことをしている場合、何か考えはありますか?? これがコードです(サーバー側)

@OnMessage
public void onMessageRecieved(SocketIOClient client, String data, AckRequest ackRequest){
System.out.println("client is "+client+" data is "+data);
}

ここにデータを送信しているクライアント側のコードがあります

var socket = io.connect('http://www.example.com:9090', 
{
'reconnection delay' : 2000,
'force new connection' : true
}); 
var data1 = {
user : document.getElementById('t1').value,
pass : document.getElementById('p1').value
};
socket.send(JSON.stringify(data));

私も試しました

socket.json.send(JSON.stringify(data));

サーバー側で送信および表示しますが、さらに操作するために他の関数に渡すと、「データ処理中にエラーが発生しました」というエラーが発生します。私が使用している解析のために

JsonReader reader = new JsonReader(new StringReader(data));
JsonObject json = new JsonParser().parse(reader).getAsJsonObject();
System.out.println(json.get("value1").toString());

私が間違っているかどうか教えてください。

4

1 に答える 1

2

https://github.com/mrniko/netty-socketio-demoプロジェクトを確認しましたか? 「チャット例」ではjsonメッセージを使用しています。

あなたの場合は。クライアントでこれを試してください:

var socket = io.connect('http://www.example.com:9090', 
{
   'reconnection delay' : 2000,
   'force new connection' : true
}); 
var data1 = {
    user : document.getElementById('t1').value,
    pass : document.getElementById('p1').value
};
socket.send(data); // you don't need to use JSON.stringify

サーバー側: // LoginObj には「user」フィールドと「pass」フィールドが必要です

    server.addJsonObjectListener(LoginObj.class, new DataListener<LoginObj>() {
          @Override
          public void onData(SocketIOClient client, LoginObj data, AckRequest ackRequest) {
             data.getUser();
             data.getPass();
        }
    });
于 2013-10-18T16:01:28.593 に答える