1

我写了这个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('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})
  });

});

这是一个安卓代码。

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(您可以看到上面的代码)时,我收到此错误: Windows 7控制台提示上的错误屏幕

4

1 回答 1

2

您正在发送一个字符串,并尝试将其解析为 JSON。

socket.send("Hello Server!");

var obj = JSON.parse(message);

"Hello Server!"不是有效的 JSON。

于 2014-08-07T07:10:02.240 回答