android - socket.io 无法工作,我的 flutter 应用程序未连接到服务器或后端部分

标签 android node.js json flutter socket.io

我在 flutter 应用程序中使用了 socket.ionode.js 作为后端部分。我创建了一个文件 index.json 并在页面中创建了一个函数来将我的应用程序连接到后端。但这不起作用。这是我在 initstate 中调用的函数 -

void connect() {
    socket = IO.io("http://my ip address", <String, dynamic>{
      "transports":["websocket"],
      "autoConnect":false,
    });
    socket.connect();
    socket.onConnect((data) => print("Connected"));
    print(socket.connected);
    socket.emit("/test", "Hello World");
  }
  


    @override
  void initState() {
    // TODO: implement initState
    super.initState();
    connect();
    //Some other code
  }  

这里是 index.js 文件 -

const express = require("express");
var http = require("http");
 const cors = require("cors");
 const app = express();
 const port = process.env.PORT || 5000;
 var server = http.createServer(app);
 var io = require("socket.io")(server, {
     cors:
     {
        origin:"*"
     }
 });

 //middlewre
 app.use(express.json());
 app.use(cors());

 io.on("connection", (socket)=>{
    console.log("connected");
    console.log(socket.id, " has joined");
    socket.on("/test", (msg)=>{
       console.log(msg);
    });
 });

 server.listen(port,"0.0.0.0",()=> {
    console.log("server started");
 })

在运行日志中,仅显示/打印 false

最佳答案

由于您似乎正在使用 Android 模拟器进行测试,因此无法使用 127.0.0.1 连接到本地主机,您需要使用地址 10.0.2.2 >.

您还需要使用 ws:// 协议(protocol)而不是 http://

您可以在这里找到官方文档:https://developer.android.com/studio/run/emulator-networking

关于android - socket.io 无法工作,我的 flutter 应用程序未连接到服务器或后端部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66878581/

相关文章:

jQuery 克隆问题

android - 在 Android 中使用按钮滑动调整元素大小

javascript - 日志仅显示四行数据之一

javascript - Adobe Premiere Pro CEP - 无法与面板一起启动 Node JS 本地服务器

javascript - 从http请求函数返回数据

asp.net - 不使用 FormsAuthentication.RedirectFromLoginPage 时如何将 Request.IsAuthenticated 设置为 true?

javascript - 可以使用带有 json 回调的 html5 视频标签吗?

java - 使用 Gson 解析没有键的嵌套 JSON 对象

java - 共享首选项未更新

android - 如何正确使用 Material 主题?