【问题标题】:not connecting in android with socket.io没有在 android 中使用 socket.io 连接
【发布时间】:2017-06-17 01:09:28
【问题描述】:

我正在尝试在我的 Android 应用程序中连接到 node.js 服务器。 我可以连接到网络上的服务器,但不能在我的应用中。 我猜这意味着服务器工作正常。

我使用 express 框架创建了服务器。 这是我的 package.json

{
  "name": "rt",
  "version": "0.0.0",
  "private": true,
  "scripts": {
  "start": "node ./bin/www"
},

"dependencies": {
  "body-parser": "~1.17.1",
  "cookie-parser": "~1.4.3",
  "debug": "~2.6.3",
  "express": "~4.15.2",
  "fs": "0.0.1-security",
  "jade": "~1.11.0",
  "morgan": "~1.8.1",
  "oracledb": "^1.13.1",
  "serve-favicon": "~2.4.2",
  "socket.io": "^1.7.4"

} }

这是我的客户端代码。

private static final String TAG = "MainActivity";

private Socket socket;
{
    try{
        socket = IO.socket("http://210.123.255.155:55555");
    }catch(Exception e){
        Log.e(TAG, e.toString());
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    socket.connect();
    Log.d(TAG, "" + socket.connected());
}

我尝试了 3 个库。

  1. com.github.nkzawa:socket.io-client:0.3.0
  2. io.socket:socket.io-client:0.8.3
  3. io.socket:engine.io-client:0.8.3

当然,我更改了每个库的 mainActivity 代码。
其中三个不工作。 我的 logcat 总是说

D/mainActivity: false 

没有任何错误。

对这个问题有什么想法吗?

【问题讨论】:

标签: android node.js socket.io


【解决方案1】:

创建一个新的类并按照你喜欢的方式命名它

    public class ChatApplication {
    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(SERVER_URL);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
     }

    public Socket getSocket() {
        return mSocket;
    }
}

在你的 MainActivity 中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);

    ChatApplication app = new ChatApplication();
    mSocket = app.getSocket();
    mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
    mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    mSocket.on(Socket.EVENT_CONNECT, onConnect);
    mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
    mSocket.connect();
}

public Emitter.Listener onConnect = new Emitter.Listener() {
    @Override
    public void call(Object... args) {
        Log.d(TAG, "Socket Connected!");
    }
};

private Emitter.Listener onConnectError = new Emitter.Listener() {
    @Override
    public void call(Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {


            }
        });
    }
};
private Emitter.Listener onDisconnect = new Emitter.Listener() {
    @Override
    public void call(Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {


            }
        });
    }
};

【讨论】:

  • 有效!谢谢!我猜套接字在活动中不起作用。
  • 嗨,我收到错误“io.socket.engineio.client.EngineIOException:服务器错误”。你有什么想法,可能的原因是什么?
猜你喜欢
  • 2021-06-26
  • 1970-01-01
  • 2017-03-26
  • 2014-05-09
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
相关资源
最近更新 更多