目前我有以下问题:
我有一个 apache 服务器,在端口 443 上运行 SSL,在 80 上运行标准(http)。另外安装了一个带有 socket.io 模块的 Node.js 服务器。
我用一个监听端口 3000 的 http 服务器编写了一个 socket.io javascript,所以在客户端(浏览器)中我包含了这样的 socket.io.js
<script type="text/javascript" src="http://www.example.com:3000/socket.io/socket.io.js"></script>
这很好用,当我通过http://www.example.com执行我的网站时。浏览器正确地找到了 socket.io.js。
如果我通过https(如https://www.example.com )执行我的网站,我将调整上面的脚本部分,如下所示:
<script type="text/javascript" src="https://www.example.com:8888/socket.io/socket.io.js"></script>
我将 src 更改为https://并将端口更改为 8888。现在我也必须调整我的 socket.io 脚本。
var https = require('https');
var fs = require('fs');
var socketio = require('socket.io');
// The server options
var svrPort = 8888; // This is the port of service
var svrOptions = {
key: fs.readFileSync('/path/to/example.key'),
cert: fs.readFileSync('/path/to/example-ca.crt'),
ca: fs.readFileSync('/path/to/example-server.pem')
};
// Create a Basic server and response
var servidor = https.createServer( svrOptions , function( req , res ){
res.writeHead(200);
res.end('Hi! Code here...');
});
// Create the Socket.io Server over the HTTPS Server
io = socketio.listen( servidor );
// Now listen in the specified Port
servidor.listen( svrPort );
如果我使用节点执行文件,socket.io 会正确启动:
info - socket.io started
但是问题来了:如果我在浏览器中执行 socket.io.js 文件的 URL,什么也没有发生:
https://www.example.com:8888/socket.io/socket.io.js
Firefox 回答:数据通信中断
节点服务器也没有收到任何请求。socket.io 没有反应。
我必须做什么?
谢谢!