我在 flutter 应用程序中使用了 socket.io
和 node.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/