Я пытаюсь заставить socket.io работать как на http
, так и на https
соединениях, но похоже, что с моей конфигурацией он может работать только на одном из них.
С помощью следующих опций конфигурации socket.io может получить доступ к моему приложению через https
, но при попытке доступа через обычный http
он не может подключиться, и я получаю ошибки.
var app = express()
, http= require('http').createServer(app)
, https = require('https').createServer(options, app)
, io = require('socket.io').listen(https, { log: false })
И позже у меня есть это
http.listen(80, serverAddress);
https.listen(443, serverAddress);
На стороне клиента у меня есть следующее:
<script src='/socket.io/socket.io.js'></script>
var socket = io.connect('https://<%= serverAddress %>', {secure: true, 'sync disconnect on unload' : true});
Конечно, если я переключу http с помощью параметров https в функциях .listen
и .connect
сервера и клиента соответственно, у меня есть обратные результаты. Socket.io может получить доступ через http, а не через https.
Как можно добиться этого? Мне нужно это в основном потому, что речь идет о приложении facebook, поэтому он должен предоставлять как http, так и https-соединения в соответствии с правилами facebook.
Изменить: в случае, если это помогает в проблеме, ошибка, которую я получаю, ниже
Failed to load resource: the server responded with a status of 404 (Not Found) http://DOMAIN/socket.io/socket.io.js
И из-за этого я получаю другие, такие как:
Uncaught ReferenceError: io is not defined