Почему Socket.io устанавливает соединение несколько раз в секунду в проектах Cordova? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть приложение Cordova, которое я сейчас разрабатываю для Android и IOS, но тестирую на Android.

Сервер сокетов в конечном итоге будет размещен на AWS, но сейчас я использую локальный сервер для разработки и тестирования..

Я использую платформу браузера, чтобы проверить это, поскольку у меня были те же проблемы.

Проблема, с которой я столкнулся, заключается в том, что при открытии приложения Cordova функция сокета socket.on('connect вызывается несколько раз в секунду.

Такое же расположение кода в не-Cordova проекте, похоже, не вызывает тех же проблем.

Любая помощь будет принята с благодарностью.

Вот код сервера:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.sockets.on('connection', function (socket) {
    console.log('socket connected');        
    socket.on('disconnect', function () {
        console.log('socket disconnected');
    });            
});

http.listen(3000);

А вот код на стороне клиента

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady () {
  var socket = io("http://localhost:3000");
  socket.on('connect', function() {
    alert("Never gets here");        
  });
}

Журнал сервера:

Server log

журнал браузера:

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Измените это в первую очередь в месте соединения с записью соединения.

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady () {
  var socket = io("http://localhost:3000");
  socket.on('connection', function() {
    alert("Never gets here");        
  });
}

Если проблема все еще существует, добавьте комментарий к этому сообщению.

0 голосов
/ 12 сентября 2018

Это связано с тем, что клиент отправляет циклический HTTP-запрос или пульс на сервер, а после ответа сервера соединение закрывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...