443 apache SSL端口和8888 https监听端口不起作用 - Node.js - socket.io

时间:2013-10-20 17:34:21

标签: node.js ssl https websocket socket.io

目前我有以下问题:

我有一个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!

1 个答案:

答案 0 :(得分:0)

这里需要两个js脚本,一个用于node.js服务器(我假设是你发布的那个),一个嵌入在html页面中。

<source>标记与node.js服务器脚本的执行无关。它指出客户端在加载HTML页面时将下载客户端js脚本的位置。因此,它需要从您的浏览器下载 - 只需尝试自己输入该URL。

socket.io代码的客户端接收其内容(node.js服务器的地址)的地址必须在客户端js中更新。

根据项目的大小,为什么不将node.js用作静态内容的唯一服务器?