如何使用socket.io模块从android向nodejs服务器发送数据?
我写了这个node.js服务器。但是当我用socket.io模块从android发送数据时。但是我得到了错误。请帮助我?如何将数据(发送者、消息)从android发送到node.js服务器 node.js服务器如何使用socket.io模块从android向nodejs服务器发送数据?,android,node.js,websocket,socket.io,google-api-nodejs-client,Android,Node.js,Websocket,Socket.io,Google Api Nodejs Client,我写了这个node.js服务器。但是当我用socket.io模块从android发送数据时。但是我得到了错误。请帮助我?如何将数据(发送者、消息)从android发送到node.js服务器 node.js服务器 var io = require('socket.io').listen(8001); var connectCounter=0; console.log('Server running :'); // open the socket connection io.sockets.on(
var io = require('socket.io').listen(8001);
var connectCounter=0;
console.log('Server running :');
// open the socket connection
io.sockets.on('connection', function (socket) {
connectCounter++;
console.log('bağlantı başarılı sayı:');
console.log(connectCounter);
//Recode user online
var sender;
socket.on('user-online',function(data){
console.log('user-online');
var obj = JSON.parse(data);
sender = obj.sender;
console.log(sender);
socket.broadcast.emit('online',{sender : sender});
});
socket.on('message', function(message){
console.log('on-message');
var obj = JSON.parse(message);
socket.broadcast.emit('event',{sender : obj.sender, message : obj.message});
console.log(message);
});
socket.on('disconnect', function (socket){
console.log('disconnect');
connectCounter--;
socket.broadcast.emit('offline',{sender : sender})
});
});
这是一个android代码
btnOK.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
strUserName = edtUserName.getText().toString();
if (strUserName != null && strUserName.length() > 0 || !"".equals(strUserName)) {
Intent intent = new Intent(getApplicationContext(), ScreenChat.class);
intent.putExtra("UserName", strUserName);
startActivity(intent);
edtUserName.getText().clear();
}else {
Toast.makeText(getApplicationContext(), "user name null", Toast.LENGTH_SHORT).show();
return;
}
SocketIO socket;
try {
socket = new SocketIO("http://192.168.9.43:8001/");
socket.connect(new IOCallback() {
public void onMessage(JSONObject json, IOAcknowledge ack) {
try {
System.out.println("Server said:" + json.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}
}
public void onMessage(String data, IOAcknowledge ack) {
System.out.println("Server said: " + data);
}
public void onError(SocketIOException socketIOException) {
System.out.println("an Error occured");
socketIOException.printStackTrace();
}
public void onDisconnect() {
System.out.println("Connection terminated.");
}
public void onConnect() {
System.out.println("Connection established");
}
public void on(String event, IOAcknowledge ack, Object... args) {
System.out.println("Server triggered event '" + event + "'");
}
});
// This line is cached until the connection is establisched.
socket.send("Hello Server!");
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@SuppressWarnings("unused")
public void onClick(final DialogInterface arg0, final int arg1) {
// TODO Auto-generated method stub
}
});
当我单击btnOK(您可以看到上面的代码)时,我得到以下错误:
您正在发送一个字符串,并试图将其解析为JSON
socket.send("Hello Server!");
var obj = JSON.parse(message);
“Hello Server!”
不是有效的JSON。尝试时,它一定错过了。你很小心。谢谢:)。要查找连接数,您知道更好的方法吗?我使用var connectcounter。