socket.io 不工作,我的颤振应用程序没有连接到服务器或后端部分

Posted

技术标签:

【中文标题】socket.io 不工作,我的颤振应用程序没有连接到服务器或后端部分【英文标题】:socket.io is not working and my flutter app is not being connected to server or backend part 【发布时间】:2021-06-26 22:06:11 【问题描述】:

我在 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");
 )

在运行日志中,它只显示/打印错误

【问题讨论】:

您是否使用 android 模拟器在本地服务器上进行测试? @JoãoSoares 是的 你找到方法了吗? 【参考方案1】:

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

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

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

【讨论】:

您能否详细说明我该如何实现?我对后端部分知之甚少。如果你想要我可以编辑这篇文章并添加更多信息,如果有帮助的话。或者请告诉我我应该在哪个文件上进行更改以实现您所说的。我正在阅读文档,但如果你能在这里帮助我,那就太好了。 您在本地机器上运行 socket.io 服务器,对吗?不要在IO.io("http://my ip address"上设置localhost或127.0.0.1,而是使用10.0.2.2上面的IP。 我在回答中添加了一些关于协议的额外信息。

以上是关于socket.io 不工作,我的颤振应用程序没有连接到服务器或后端部分的主要内容,如果未能解决你的问题,请参考以下文章

重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件

Swift iOS 应用程序不使用 Socket.IO 连接到服务器

通过socket.io连接到节点服务器的phonegap应用程序在浏览器上工作,但在应用程序中不工作

无法从Win Forms C#app连接到远程Node.js Socket.IO服务器

Android Node.js Socket.io没有连接

Socket.io 不会按需关闭套接字(并且不允许我的 swift 应用程序再次重新连接到 node.js 服务器)