离子骨架&x2B;科尔多瓦。WebSocket在android发布版本中不工作,但调试版本工作正常

离子骨架&x2B;科尔多瓦。WebSocket在android发布版本中不工作,但调试版本工作正常,android,cordova,ionic-framework,websocket,release,Android,Cordova,Ionic Framework,Websocket,Release,使用此日志: WebSocket连接到'wss://xxxxxx.net/'失败:WebSocket打开握手已取消' “TransportWebSocket.errorHandler-错误{}” TransportWebSocket.closeHandler-错误{“代码”:1006,“文本”:“}” 请帮助解决此问题。 sp.external.TransportWebSocket = function () { var self = this; var sock

使用此日志:

WebSocket连接到'wss://xxxxxx.net/'失败:WebSocket打开握手已取消'

“TransportWebSocket.errorHandler-错误{}”

TransportWebSocket.closeHandler-错误{“代码”:1006,“文本”:“}”

请帮助解决此问题。

sp.external.TransportWebSocket = function () {
        var self = this;
        var socket = null;
        var isOpen = false;
        var listSendMsg = [];

        this.openHandler = null;
        this.closeHandler = null;
        this.messageHandler = null;
        this.errorHandler = null;
        this.serverURL = '';

        this.send = function (_data, _highPrioritetFlag) {
            utils.logger.debug('TransportWebSocket', 'send', 'Open status:' + isOpen);

            _highPrioritetFlag = _highPrioritetFlag || false;

            if (isOpen) {
                if (_data && typeof _data === 'object') {
                    try {
                        socket.send(JSON.stringify(_data));
                    }
                    catch (error) {
                        throw new Error('Invalid JSON stringify');
                    }
                }
                else {
                    throw new Error('The data sent must be an object');
                }
            }
            else {
                if (_highPrioritetFlag) {
                    listSendMsg.unshift(_data);
                }
                else {
                    listSendMsg.push(_data);
                }

                openSocket();
            }
        };

        this.reopen = function () {
            utils.logger.debug('TransportWebSocket', 'reopen');
            openSocket();
        };

        this.close = function (_code) {
            utils.logger.debug('TransportWebSocket', 'close');
            socket.close(_code);
        };

        function procListMsg() {
            utils.logger.debug('TransportWebSocket', 'procListMsg', 'Processing buffer messages, items:' + listSendMsg.length);
            if (listSendMsg.length > 0) {
                self.send(listSendMsg.shift());
                setTimeout(procListMsg, 20);
            }
        }

        function openHandler() {
            utils.logger.debug('TransportWebSocket', 'openHandler', 'WebSocket.readyState:' + socket.readyState);
            if (socket.readyState === WebSocket.OPEN) {
                isOpen = true;

                procListMsg();

                if (self.openHandler) {
                    self.openHandler();
                }
            }
        }

        function closeHandler(error) {
            utils.logger.debug('TransportWebSocket', 'closeHandler', 'Error', {code: error.code, text: error.reason});
            isOpen = false;

            if (socket.readyState === WebSocket.CLOSED) {

                if (self.closeHandler) {
                    self.closeHandler(error);
                }
            }
        }

        function errorHandler(error) {
            utils.logger.debug('TransportWebSocket', 'errorHandler', 'Error', {code: error.code, text: error.reason});
            isOpen = false;

            if (self.errorHandler) {
                self.errorHandler(error);
            }
        }

        function messageHandler(e) {
            var msg = null;

            if (self.messageHandler) {
                try {
                    msg = JSON.parse(e.data);
                }
                catch (error) {
                    throw new Error('Invalid JSON format in response: ' + e.data);
                }

                self.messageHandler(msg);
            }
        }

        function openSocket() {
            utils.logger.debug('TransportWebSocket', 'openSocket', 'Opening');
            socket = new WebSocket(self.serverURL);
            socket.onopen = openHandler;
            socket.onclose = closeHandler;
            socket.onmessage = messageHandler;
            socket.onerror = errorHandler;
        }
    };

我不知道你是否已经解决了这个问题,但是对于遇到同样问题的人和找到这个线程的人,你可以检查这个

简而言之,修改使调试和发布行为不同的文件:
platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java

在ReceivedSlerror上注释掉方法的内容,并将其替换为

handler.proceed();
return;

你能分享你的代码吗?我添加了模块的代码你有网络权限吗?是的,我在AndroidManifest.xml中有这个字符串