Итак, это часть более крупного приложения, которое я пытался запустить с помощью кластера и socket.io-redis, чтобы оно работало на нескольких узлах и машинах, если мне понадобится масштабирование в будущем.
Кажется, у меня серьезные проблемы с некоторыми клиентами, которые не могут поддерживать соединения. Некоторые клиенты делают это настойчиво (в основном устройства iOS, которые, как я полагаю, должны использовать транспорт опроса), но другие иногда работают, а иногда нет (что опять же я приписываю использованию опроса).
Я удалил все обратно, и оказалось, что проблема была не в кластере.
В любом случае мой server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3800;
/* -------------------------------- */
io.on('connection', function(socket){
var datetime = new Date().toLocaleString();
console.log(datetime+' - '+'a user connected - '+socket.id);
});
/* -------------------------------- */
http.listen(port, function() {
var datetime = new Date().toLocaleString();
console.log(datetime+' - '+'listening on *:' + port);
});
и вывод в консоль
Wed Mar 11 2015 16:22:53 GMT+0000 (GMT) - listening on *:3800
Wed Mar 11 2015 16:22:54 GMT+0000 (GMT) - a user connected - YrLUOrgfpnQVwoWMAAAA
Wed Mar 11 2015 16:22:58 GMT+0000 (GMT) - a user connected - nH6x-97uf3iR2LgNAAAB
Wed Mar 11 2015 16:23:01 GMT+0000 (GMT) - a user connected - VsrFO31elPyKfQJcAAAC
Wed Mar 11 2015 16:23:08 GMT+0000 (GMT) - a user connected - 7xuKZ6aykYIDcxN-AAAD
Wed Mar 11 2015 16:23:15 GMT+0000 (GMT) - a user connected - ZsmZtFHmLrH1DxXWAAAE
Wed Mar 11 2015 16:23:22 GMT+0000 (GMT) - a user connected - HFUApMwwFZallJnQAAAF
Это просто продолжается бесконечно. Я тестирую его с iPad, при этом клиент загружается из сверхзвукового приложения appgyver (cordova и javascript).
Я получаю ту же проблему при использовании форка примера чата socket.io, модифицированного для использования в кластере - https://github.com/evilstudios/chat-example-cluster
Мой вопрос: почему некоторые клиенты не могут поддерживать соединение? Как исправить эти проблемы, когда опросный транспорт не поддерживает ни одного сеанса?