【发布时间】:2013-06-21 12:47:06
【问题描述】:
我正在尝试使socket.io 在http 和https 连接上都工作,但似乎以我当前的配置它只能在其中一个上工作。
使用以下配置选项,它可以通过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});
当然,如果我在服务器和客户端的.listen 和.connect 函数上分别切换http 和https 选项,我会得到相反的结果,例如它可以通过http而不是https访问。
如何实现这一目标?我需要它主要是因为它与 Facebook 应用程序有关,因此它必须根据 Facebook 的规则同时提供 http 和 https 连接选项。
编辑:如果它有助于解决问题,我收到的错误是这样的:
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
【问题讨论】:
标签: node.js ssl express socket.io