【发布时间】:2014-06-11 01:57:27
【问题描述】:
我正在开发一个使用https://github.com/Gottox/socket.io-java-client 实现套接字io 客户端的android 应用程序。
我的 Nodejs 服务器
var app = require('http').createServer(),
io = require('socket.io').listen(app),
http = require('http'),
mysql = require('mysql'),
connectionsArray = [],
connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'login',
port: 3306
});
app.listen(3000);
io.sockets.on('connection', function (socket) {
socket.on('register_usernames', function (data) {
io.sockets.socket(socket.id).emit('register_usernames' , {username:"one"});
io.sockets.socket.(socket.id).emit('register_usernames_one', {username:"two"});
getBookingHistory(data);
});
connectionsArray.push(socket);
});
安卓客户端
package com.nuappz.socketdemo;
import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;
import java.net.MalformedURLException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class Search extends Activity implements IOCallback{
SocketIO socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
try {
// Try making the socket connection
socket = new SocketIO("http://nuappzdev.weteksi.com:3000/");
socket.connect(this);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
socket.emit("register_usernames", "123");
}
@Override
public void onDisconnect() {
// TODO Auto-generated method stub
}
@Override
public void onConnect() {
// TODO Auto-generated method stub
}
@Override
public void onMessage(String data, IOAcknowledge ack) {
// TODO Auto-generated method stub
}
@Override
public void onMessage(JSONObject json, IOAcknowledge ack) {
// TODO Auto-generated method stub
}
@Override
public void on(String event, IOAcknowledge ack, Object... args) {
// TODO Auto-generated method stub
if(event.equals("register_usernames")) {
Log.d("message response", args.toString());
} else if (event.equals("register_usernames_one")) {
Log.d("message reply", args.toString());
}
}
@Override
public void onError(SocketIOException socketIOException) {
// TODO Auto-generated method stub
}
}
在事件收到时在方法中显示参数。但它显示以下错误
日志猫
06-09 18:25:52.321:I/io.socket(1890):>5:::{"args": ["123"],"name":"register_usernames"}
06-09 18:25:52.322: I/io.socket(1890): < 1::
06-09 18:25:52.408: I/io.socket(1890): < 5:::{"name":"message_response","args": [{"username":"one"}]}
06-09 18:25:52.409: D/message response(1890): [Ljava.lang.Object;@4177d208
06-09 18:25:52.409: I/io.socket(1890): < 5:::{"name":"message_reply","args": [{"username":"two"}]}
06-09 18:25:52.409: D/message reply(1890): [Ljava.lang.Object;@41739f30
06-09 18:25:52.471: D/dalvikvm(1890): threadid=16: interp stack at 0x5d914000
1.如何发送数据以及如何从客户端获取数据。
2.我如何发送一个数组或Json并解析它。
【问题讨论】:
标签: java android node.js object socket.io