使用https证书时,android和mac上的socket.io错误的Node.JS

时间:2013-09-16 22:20:57

标签: android macos node.js ssl socket.io

我有一个与PHP服务器并行运行的NodeJS服务器,以获取用户的实时通知。 Node服务器运行expressJS和socket.io。

要使用我做的证书创建我的服务器:

var express = require('express');
var app = express();
var config = require('./config');
var http = require('https');
var fs = require('fs');
var options = {
    key: fs.readFileSync(config.key),
    cert: fs.readFileSync(config.certificate),
    requestCert: true
};
var server = http.createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(config.port);

用户使用以下方式连接到服务器:

connectHTTPS: function() {
        ChatBox.socket = io.connect(ChatBox.serverAddress, {
            port: ChatBox.serverPort,
            secure: true,
        });
    },

代码非常简单,除Mac用户和Android用户外,工作正常。 Mac用户的问题是,他们会被提示一个窗口,要求他们选择证书来验证自己。证书类似于“com.apple.idms.appleid.prd。(一些随机字符串)”。 对于Android用户,系统会提示他们警告他们在设备上使用安全设备(图钉,图案等)。

此连接仍适用于Mac用户,但不能在Android上运行。我相信这与为某个域发布的证书有关,而与NodeJS服务器的连接是相同的域但具有不同的端口。

0 个答案:

没有答案