【问题标题】:Android socket io client node js cant get valuesAndroid socket io客户端节点js无法获取值
【发布时间】: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


    【解决方案1】:

    我发现真正的问题是什么。
    正如我尝试在包含数组的对象中获取值一样。
    对象本身是一个数组。所以

    我的尝试是:

    args.toString();   
    

    对象无法转换为字符串。

    我是这样实现的:

    args[0].toString(); //args[position].toString();    
    

    这样我就解决了我的问题..

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 2022-09-27
      • 2013-08-30
      • 2012-09-30
      • 1970-01-01
      • 2021-09-14
      • 2016-06-04
      • 1970-01-01
      相关资源
      最近更新 更多