【问题标题】:socket.io-client java not connecting to serversocket.io-client java没有连接到服务器
【发布时间】:2018-03-14 12:28:05
【问题描述】:

我在 nodejs 中有 socket.io 服务器,我可以从 JavaScript 客户端连接到它,但是从 java/android 我无法连接! 这是我的代码:

节点js:

var socket = require('socket.io')();
var users = {
    desktop : {},
    android : {}
}
socket.on('connection',function(client){
    console.log(`new connection ! ${client.id}`);
    client.on('intro',(user)=>{

            user.client = client ;
            user.cid = client.id ;
            users[user.type] = user ;

            console.log('users '+users);
    })
});
socket.listen(2731)
console.log(`app running`);

这里是java代码:

import io.socket.client.IO;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatButton;
import android.view.View;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.net.URISyntaxException;

public class MainActivity extends AppCompatActivity {
    io.socket.client.Socket socket ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
          socket = IO.socket("http://192.168.1.103:2731");
          JSONObject intro = new JSONObject();
          intro.put("type","android");
          intro.put("id",7);
          socket.emit("intro");

        } catch (URISyntaxException e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
        }

        setContentView(R.layout.activity_main);
    }

}

我用 localhost:2731 进行了测试,防火墙也关闭了,但再次没有连接。 没有错误也没有出现异常

【问题讨论】:

  • 你用的是模拟器还是真机?检查您的设备是否连接到与服务器相同的网络
  • @ammcom 是的,网络是一样的,而且我只在 Eclipse 中使用 localhost:2731 运行 java 代码,但没有工作

标签: java android node.js sockets


【解决方案1】:

你的代码应该是这样的:

socket = IO.socket("http://192.168.1.103:2731");
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

  @Override
  public void call(Object... args) {
      JSONObject intro = new JSONObject();
      intro.put("type","android");
      intro.put("id",7);
      socket.emit("intro");
  }
};
socket.connect();

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2016-05-12
    • 2014-05-09
    • 2015-11-12
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多