Socket.io - angular.js。 - 总是与 "ping timeout" 断开连接

Socket.io - angular.js. - always disconnected with "ping timeout"

正在尝试使用 Angular js + socket.io 连接到服务器(Node.js - nestsJS)

我有 React 和 Angular 应用程序 在 React 应用程序中,一切正常

在 Angularjs 中我总是“ping 超时”,然后它尝试重新连接 - 在服务器上我看到了连接并且它通过了身份验证流程。

当我转到网络选项卡 (WS) 时,我在后端经过身份验证后收到了我的事件,所以它看起来像是客户端问题 所以每 ~30 秒控制台输出断开连接 + 原因“ping 超时”

Angular 代码-套接字服务

        .factory('socket', socket);

    socket.$inject = ["$rootScope"];

    function socket($rootScope) {

        const options = {
                    transports:['websocket'],
                    // allowUpgrades: false,
      
                    query: {
                        token : "token",
                    },
                    forceNew: true
                }
        var socket = io.connect('/', { ...options, path: `/socket.io` });

        return {
            on: function(eventName, callback) {
                socket.on(eventName, function() {
                    var args = arguments;
                    $rootScope.$apply(function() {
                        callback.apply(socket, args);
                    });
                });
            },
            emit: function(eventName, data, callback) {
                socket.emit(eventName, data, function() {
                    var args = arguments;
                    $rootScope.$apply(function() {
                        if (callback) {
                            callback.apply(socket, args);
                        }
                    });
                })
            }
        };

控制器:

     socket.on('connect', function (data) {
            console.log("connect")

        });
        socket.on('connection', function (data) {
            console.log("connect")

        });
        socket.on('disconnect', function (data) {
            console.log("disconnect")
            console.log(data)
        });

        socket.on('events-test', function (data) {
            console.log("test")
            console.log(data)
        })

在网络选项卡中,我可以看到“events-test”事件,它会在每次重新连接时创建一个新的“ws”选项卡

通过将 socket-io 客户端版本更改为 2.3.0 解决 在客户端使用 socketio 版本 2 来匹配服务器。 3 和 4 与服务器 v2

不兼容