我正在使用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());
请告诉我,如果我出错了?
答案 0 :(得分: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();
}
});