无法在android设备和node.js服务器之间连接

Posted

技术标签:

【中文标题】无法在android设备和node.js服务器之间连接【英文标题】:Can not connect between android device and node.js server 【发布时间】:2020-03-25 16:29:34 【问题描述】:

所以在这里,我正在尝试使用 socket.io 将我的 android 连接到我的服务器 node.js,但在执行过程中,没有错误但连接尚未建立并返回 false

提前感谢您的帮助!

Socket.Java

package com.example.myprojectapplication.ObjectClass;

import com.github.nkzawa.socketio.client.IO;

import java.net.URISyntaxException;

public class Socket 

    private com.github.nkzawa.socketio.client.Socket mSocket;
    
        try 
            mSocket = IO.socket("localhost:8081/");
         catch (URISyntaxException e) 
            throw new RuntimeException(e);
        
    

    public com.github.nkzawa.socketio.client.Socket getSocket() 
        return mSocket;
    

我的 MainActivity 的相关部分

com.example.myprojectapplication.ObjectClass.Socket app = new com.example.myprojectapplication.ObjectClass.Socket();
Socket mSocket = app.getSocket();
mSocket.connect();

Node.js 服务器

var mysql = require('mysql');
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);

io.sockets.on('connection', function (socket) 

  socket.emit('message', 'Android Connected');
  console.log("Android Connected");

  socket.on('message', function(message)
    console.log("message received");
    socket.emit('message', 'message received');
  );

);

server.listen(8081)

【问题讨论】:

【参考方案1】:

在 Socket.Java 中,您使用 localhost:8081/ 而不是这个地址,您必须使用 node.js 服务器 IP 地址(本地 IP 地址)。要将您的应用程序与 node.js 服务器连接,您必须将您的计算机和应用程序运行设备保持在同一网络中。

【讨论】:

即使一切都是在本地模拟的? 是的,因为对于 android 模拟器 localhost 意味着自己的地址,并且您想要指向在您的计算机上运行的服务器。【参考方案2】:

另一个答案是正确的。但要注意的另一件事:如果您使用的是模拟器,那么您可以使用 10.0.2.2 来引用主机的 localhost。这对于开发非常有用,因为您不必在每次更改网络时都获取笔记本电脑的实际 IP 地址。

请参阅:https://developer.android.com/studio/run/emulator-networking 了解更多信息

【讨论】:

谢谢伙计...这对我真的有用。我一直在使用我的 IP 地址而不是 10.0.2.2

以上是关于无法在android设备和node.js服务器之间连接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Node.JS 和 React-Native (Socket.IO) 之间建立连接

如何将数据从 Android 中的数据报套接字发送到 Node js 服务器?

Android、PHP和node.js之间的加解密

有一种方法可以在 Node.JS 中为所有设备推送通知吗?

如何在android设备和xmpp服务器之间建立连接?

在 Node、js 应用程序中接收 Java JSONObject 时未引用它