我在将socket io Flatter客户端连接到nodejs socket io服务器时遇到问题.

即.,

socket_io_client: ^1.0.2

服务器端.

{
   "socket.io": "^2.4.1",
}

我也try 了最新的依赖项,但我在日志(log)中收到了同样的timeout条消息,

下面我将添加服务器端和客户端的实现,

const { socketGuard } = require('./middlewares/socketio.middleware');
let io;

module.exports = {

    init: (server) => {
        
        io = require("socket.io")(server, { cors: { origin: '*' } });

        io.use(async (socket, next) => {

            let result = await socketGuard(socket);

            if (result.isValid) {
                next();
            }
            else {
                next(new Error("Not authorized"));
            }

        });

        io.on("connection", (socket) => {

            console.log(`${socket.id} : connected`);

        });

        return io;
    },

    get: () => {


        if (!io) {


            throw new Error("Socket io not initialized");

        }

        return io;

    }

};

对于Flutter ,我在init函数中添加了以下几行:,

    io.Socket socket = io.io("http://192.168.1.14:5000");

    socket.onConnect((data) {log("Hello world");});

    socket.onConnectError((data) {log(data);});

    socket.onError((data) {log(data);});

    socket.on("message", (data) {log(data);});

推荐答案

try 在初始化socket时添加选项Map.

io.Socket socket = io.io("http://192.168.1.14:5000", <String, dynamic>{
    "transports": ["websocket"],
});

在我的一个项目中,我可以确认,如果没有这一点,它是不起作用的.

Node.js相关问答推荐

使用Moongose处理node.js中重定向的then()块链

NX无法使用缓存运行根级脚本

对接Nestjs/VueJS应用程序

Sveltekit停靠的应用程序找不到从Build导入的包

在 React 和 Socket.io 中使用 Effect 钩子重新渲染两次

node Axios 创建全局令牌变量以在单独的变量头中使用

使用mongoose 创建新文档并仅取回选定的字段

Mongoose,如何一次更新多个?

Sharp JS 依赖关系 destruct 了 Elastic Beanstalk 上的 Express Server

try 运行迁移时的 Typeorm:缺少必需的参数:dataSource

在 Express-js 中使用路由

如何防止 node.js 中的内存泄漏?

yarn.lock 和 npm 的 package-lock 有什么区别?

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

错误:大多数中间件(如 bodyParser)不再与 Express Bundle

如何在 node 中找到引用站点 URL?

如何使用 Node.js 在服务器端管理多个 JS 文件

从 JavaScript 文件或 REPL 中 require()'ing CoffeeScript 文件

npm install packagename --save-dev 不更新 package.json

AWS Lambda:如何将秘密存储到外部 API?