Мой простой код для теста:
index.html
<script src="http://localhost:2020/socket.io/socket.io.js"></script>
<script>
socket = io('http://localhost:2020'/*,{secure: true}*/);
</script>
Примечание. Я удалил защищенное значение true.
app.js Nodejs
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
path = require("path");
app.use(express.static(__dirname + '/public'));
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
server.listen(2020);
console.log("localhost:2020");
io.on('connection', function(socket) {
console.log("in");
socket.on('disconnect',function(data){
console.log("out");
});
});
когда я тестирую простое соединение на своем сокет-сервере с помощью nodejs, если я открываю новую страницу (новое соединение) в другом браузере, например в chrome и другом экземпляре в опере, второй экземпляр не работает или не имеет блока, не открывайте страницу и не вызывайте сервер socket.io, но когда я открываю новую вкладку в Chrome, новые вкладки с новым подключением работают нормально ...
примечание: страница клиента не размещена на сервере socket.io, поскольку страница клиента размещена на сервере apache.
P1 - я открываю index.html в Chome
= Страница работает нормально и сокет подключается правильно
P2 - я открываю index.html в новой вкладке Chrome
= Страница работает так же нормально и соединяется.
P3 - я открываю index.html в инкогнито хроме или открываю в Opera (другой браузер)
= Сокет не подключен и страница заблокирована
P4-я делаю (обновляю) сокет, который я открыл в Chrome (P2), то есть я обновляю новую вкладку Chrome.
Сервер сокетов по-прежнему заблокирован и даже не подключается.
P5 - я обновляю страницу (P1):
= все разблокировано и все страницы, которые находятся на домашней странице и заблокированы, теперь подключаются к сокету нормально
происходит, если index.html размещен за пределами NodeJS, но если, например, я создаю index.html, размещенный, например, в представлении Nodejs, он не проходит, проблема заключается в том, что мое приложение рассматривается как загружаемый виджет внешний по отношению к nodejs.