无法在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) 之间建立连接