gpt4 book ai didi

node.js - Socket.io + NodeJS IONIC CORS 问题

转载 作者:行者123 更新时间:2023-12-03 12:07:10 25 4
gpt4 key购买 nike

我希望你做得很好。
我目前正面临我的 IONIC 应用程序的问题。
设置 :

  • 安装了 ngx-socket-io 模块的 IONIC 5 应用程序
  • NodeJS 后端与 express API 和 socket.io 服务器监听 xxx.xxx.xxx.xxx:3000
  • socket.io 和 socket.io-client 都在版本 2.4.0

  • 这是我在 IONIC 端使用的代码:
    this._storage.get(`setting:loginToken`).then(setToken => {
    alert("Connecting to socket.io server...")
    this.socket.connect();
    alert("Should be connected...")
    this.socket.emit('authenticate', { token: setToken });
    alert("Auth token sent")
    }, error => console.log(error));
    这就是我在使用 ionic serve 运行应用程序时在浏览器开发人员工具中得到的结果。 : Blocking a Cross-Origin Request: The "Same Origin" policy does not allow consulting the remote resource located at http://XXX.XXX.XXX.XXX:3000/socket.io/?EIO=3&transport=polling&t=NTkQPqH. Reason: The CORS header "Access-Control-Allow-Origin" is missing.我在 Android 设备上使用 APK 构建实验同样的问题。
    但是我的 express API 上的其他“非 socket-io”请求在 IONIC 方面表现良好。
    这是我写的后端代码:
    const app = express();
    app.use(cors());

    var server = app.listen(config.port, () => {
    console.log('Server is listening on %d in %s mode.', config.port, app.get('env'));
    });

    var io = require('socket.io')(server)
    const socketioJwt = require('socketio-jwt');

    io.sockets
    .on('connection', socketioJwt.authorize({
    secret: 'stackoverflow',
    timeout: 15000
    }))
    .on('authenticated', (socket) => {

    socket.on("disconnect", () => {
    })

    });


    socket.io-client 联系可以很好地模拟客户端。
    在这种情况下有什么问题?
    感谢您提供的任何帮助或建议。

    最佳答案

    看起来您需要将 CORS 添加到 io 实例:
    对于 v2.x.x

    require('socket.io')(server, {
    origins: [`http://localhost:${config.port}`]
    })
    https://socket.io/docs/v2/handling-cors/
    对于 v3.x.x:
    require('socket.io')(server, {
    cors: {
    origin: `http://localhost:${config.port}`,
    methods: ['GET', 'POST']
    }
    })
    https://socket.io/docs/v3/handling-cors/
    我不确定您是否需要在 express 应用程序上使用 CORS,因为您似乎只使用套接字,但这当然取决于您。

    关于node.js - Socket.io + NodeJS IONIC CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66052356/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com