Nodejs – Socketio不与https服务器,可能是什么原因?

我尝试使用http服务器debugging,并且socket.io工作,但是当我尝试使用https socket.io停止工作

// create server for http and https //var httpserver = http.createServer(app).listen('3000', '127.0.0.1'); var https_server = https.createServer(options, app).listen('4000', '127.0.0.1'); // let the backend listens to this server UserServer.listen(https_server); //UserServer.listen(httpserver); exports.listen = function(server){ io = socketio.listen(server); io.sockets.on('connection', function(socket){ console.log("Socket is connected, sweet "); }); } 

什么时候

 var httpserver = http.createServer(app).listen('3000', '127.0.0.1'); UserServer.listen(httpserver); 

打印

 Socket is connected, sweet " 

什么时候

 var https_server = https.createServer(options, app).listen('4000', '127.0.0.1'); UserServer.listen(https_server); 

没有输出

这里是我设置为https

 var express = require('express'), https = require('https'), fs = require('fs'); var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./cert.pem', 'utf8') }; 

我能够显示https页面,所以我猜测https安装不是问题

任何意见,将不胜感激,谢谢

首先,您需要使用SSL运行Node.js服务器 。

Server.js

 var fs = require('fs'); var options = { key: fs.readFileSync('ssl/private/domain.com.key'), cert: fs.readFileSync('ssl/certs/domain.com.crt'), ca: fs.readFileSync('ssl/certs/domain.com.cabundle') }; // You can do this easily if you are on windows // var options = { pfx: fs.readFileSync('/home/mydir/secure.pfx'); }; var app = require('https').createServer(options, handler), io = require('socket.io').listen(app); //Recommended Production settings io.enable('browser client minification'); // send minified client io.enable('browser client etag'); // apply etag caching logic based on version number io.enable('browser client gzip'); // gzip the file io.set('log level', 1); // reduce logging io.set('flash policy port', 3300); //==> override Flash Policy Port io.set('transports', [ // enable all transports (optional if you want flashsocket) 'websocket' , 'flashsocket' , 'htmlfile' , 'xhr-polling' , 'jsonp-polling' ]); function handler(req, res) { res.writeHead(200); res.end("welcome sir!"); }; io.sockets.on('connection', function (socket) { socket.on('message', function (data) { socket.broadcast.emit('message', data); }); }); app.listen(3300); 

Client.js

  //socketAddress is server uri ex. https://www.domain.com:3300 var socket = io.connect(socketAddress, {'flash policy port':3300} ); socket.on('connect', function (data) { //.... }); socket.on('message', function (data) { //.... });