目前我有以下问题:
我有一个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没有反应。
我该怎么做?
THX!
答案 0 :(得分:0)
这里需要两个js脚本,一个用于node.js服务器(我假设是你发布的那个),一个嵌入在html页面中。
<source>
标记与node.js服务器脚本的执行无关。它指出客户端在加载HTML页面时将下载客户端js脚本的位置。因此,它需要从您的浏览器下载 - 只需尝试自己输入该URL。
socket.io代码的客户端接收其内容(node.js服务器的地址)的地址必须在客户端js中更新。
根据项目的大小,为什么不将node.js用作静态内容的唯一服务器?