узел https сервер socket.io транспортный веб-сокет не работает в Safari, но хорошо работает в другом браузере (chrome, firefox) - PullRequest
0 голосов
/ 27 февраля 2019

узел https проект все работает хорошо в браузере ПК (chrome firefox), но при запуске проекта в ios (ipad, iphone) safari, socket.io (transport: ["websocket"]) не работает, однако, когдая изменяю транспорт как опрос, он может работать, но соединение с сокетом часто отключается (

index.js:83 POST http://localhost:3000/socket.io/?serialNumber=SP75111&EIO=3&transport=polling&t=MajUroN&sid=u76RcG7ofRkgorCJAAAA 400 (Bad Request)

index.js:83 POST http://localhost:3000/socket.io/?serialNumber=SP75111&EIO=3&transport=polling&t=MajUrtH&sid=u76RcG7ofRkgorCJAAAA 400 (Bad Request)), So the connection is always: reconnected, disconnected.....

у кого-нибудь есть решение? Есть идеи? app.js:

let socketIo = require("socket.io")
let webSocket = require('./websocket');
if (config.certConfig.enable) {
    io = socketIo(httpsServer, {
        pingInterval: 8000,
        pingTimeout: 12000,
        transport: ['websocket','polling'],
        path: "/socket.io"
    });
} else {
    io = socketIo(httpServer, {
        pingInterval: 8000,
        pingTimeout: 12000,
        transport: ['websocket','polling'],
        path: "/socket.io"
    });
}
webSocket.webSockets(io);

index.html:

var async = new Promise(function (resolve, reject) {
        var downloadIndexLoading = showLoadMessage(MESSAGE[0].BBMES_00053);

        let reconnectFlag = false;
        let serialNumberStr = "?serialNumber=" + machineParams.serialNumber;
        var socket = io(window.location.protocol + "//" + window.location.host + "/preload" + serialNumberStr, {
            transports: ['websocket','polling'],
            forceNew: true,
            path: "/socket.io",
            'reconnection': true,
            'reconnectionDelay': 1000,
            'reconnectionDelayMax': 5000,
            'reconnectionAttempts': 5
        });
        socket.on('connect', () => {
            let preloadData = {
                serialNumber: machineParams.serialNumber,
                machineModel: machineParams.machineModel,
                tableType: machineParams.tableType,
                processType: machineParams.processType,
                machineTypeId: machineParams.machineTypeId,
                mvtParameter: JSON.stringify(machineParams.mvtParameter),
                encoderType: machineParams.encoderType,
                userName: machineParams.userName,
                empNo: machineParams.empNo,
                isAtpp: machineParams.isAtpp
            }
            if (!reconnectFlag) {
                socket.emit('isPreLoadData', preloadData);
            }
        });
        socket.on('reconnect', () => {
            reconnectFlag = true;
        });

        socket.on('preLoadResult', function (data) {
           ...
            socket.close();
        })
    });
    return async;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...