我在将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相关问答推荐

是否可以在MongoDB中比较和匹配引用文档中的字段

聚合操作不返回任何具有mongoose模式的内容

在内存中加载安全密钥安全吗?还是每次都从文件中读取?

如何在医学中按patientId查找一个并同时插入多个数据

下一个API路由如何处理多个并发请求?

我如何在nodejs中的路由之间交换令牌

安装样式组件时出现react 错误

Prisma,只有一个用户的行可以有真值,@@unique(userId, isActive)

为什么 nginx 不将我的 react index.html 作为后备服务

在 .htaccess 中从非 www 切换到 www 后如何解决无法访问该站点?

如何通过node下载zip并直接解压zip?

Fly.io 启动问题:无法从源获取图像或构建错误:构建错误:连接期间出错:发布...

Express.js cookie setter 的 Domain 属性:如何与 *多个 * 域共享 cookie?

如何更新 MongoDB 中对象数组中的键?

tsc:当我上传 React+next js 和 node 项目时,在 heroku 找不到

Web3.js 脚本在监听 CreatedPairs 时退出

如何在 node 调试器中禁用第一行中断

Puppeteer:如何提交表单?

nodejs:Ajax 与 Socket.IO,优缺点

如何在 NodeJS 中拆分和修改字符串?