【问题标题】:Android Node.js Socket.io always connecting successfulAndroid Node.js Socket.io 总是连接成功
【发布时间】:2015-06-26 17:22:04
【问题描述】:

我想使用 Socket.io 在 pc 和 Android 之间进行通信。代码:

http://socket.io/blog/native-socket-io-and-android/

public class MainActivity extends ActionBarActivity {

private Boolean socketConnection;
TextView tw;
Socket mSocket;

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

    tw = (TextView)findViewById(R.id.textView);

    try {
        mSocket = IO.socket("http://localhost:3000");
        mSocket.connect();
        socketConnection = true;
        tw.setText("Yes");
    }catch(URISyntaxException ex) {
        socketConnection = false;
        tw.setText("No");
    }

}

当我调试应用程序时;服务器应用程序虽然关闭,但客户端说连接成功。当我打开服务器应用程序时,服务器应用程序看不到客户端。

【问题讨论】:

  • 但是您正在连接到 Android 设备上的 localhost:3000,这将在 Android 设备上的某个位置
  • 听起来一切都按预期工作。你有什么问题?
  • 因为我在电脑上使用安卓模拟器。 @Patosai
  • 我试过“192.168.1.5:3000”,但还是一样。
  • 我解决了问题; mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);谢谢大家。

标签: android node.js socket.io


【解决方案1】:

正如@Patosai 所指出的,您的代码的问题在于您正在连接到localhost:3000。这意味着您正在尝试连接到正在运行您的应用程序的设备(Android 手机或模拟器)。这将始终说它已连接,因为设备始终可以与自身连接。

假设您连接到与您的 PC 相同的网络,您将需要找到您的 PC 的 IP 地址和您选择用于通信的端口。例如,如果您确定您的 PC 的 IP 是 123.456.2.1 并且您的 Socket.IO 代码中的端口是 4000,您将编写 mSocket = IO.socket("http://123.456.2.1:4000")

【讨论】:

    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 2019-04-06
    • 2013-09-24
    • 2018-05-14
    • 2018-10-13
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多