套接字io,node.js

套接字io,node.js,node.js,socket.io,Node.js,Socket.io,我会尽我所能解释我自己 我有一个node.js服务器,我想添加socket.io。我设法让它在http上运行,但在https上运行时遇到了一些问题 服务器: var express = require('express'); var app = express(); var fs = require('fs'); var key = fs.readFileSync('mydomain.key'); var cert = fs.readFileSync( 'mydomain.crt' );

我会尽我所能解释我自己

我有一个node.js服务器,我想添加socket.io。我设法让它在http上运行,但在https上运行时遇到了一些问题

服务器:

var express = require('express');
var app = express();
var fs = require('fs');


var key = fs.readFileSync('mydomain.key');
var cert = fs.readFileSync( 'mydomain.crt' );

var options = {
key: key,
cert: cert
};

var https = require('https');
var io = require("socket.io")(https);
var cors = require('cors')

var server = https.createServer(options, app).listen(443);

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", 'domain');
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header('Access-Control-Allow-Credentials', true);
  next();



server.on('error', function (e) {
  console.log(e);
});

io.on('connection',function(socket){  
    console.log("A user is connected");
    socket.on('add reserva',function(status){
    //io.sockets.emit('update reserva', status);
      add_reserva(status,function(res){
        if(res){io.sockets.emit('update reserva', status);} 
          else {io.sockets.emit('error');}
      });
    });
});

**And the client code:**

      $(document).ready(function(){
          var socket = io("https://151.236.63.10:443");
          $("#add_status").click(function(){
            socket.emit('add reserva',$("#comment").val());
          });
          socket.on('update reserva',function(msg){
            new Noty({
                type: 'success',
                layout: 'topRight',
                text: msg
            }).show();
          });
    });
});

此外,如果我能在代码方面做得更好,我将非常感谢任何建议

好的,我会给你一个重写,让代码更干净。希望能有帮助

const express = require express();
const app = express();
const https = require('https');
const fs = require('fs');

const config = require('./config'); //--> config file 

var options = {
key: fs.readFileSync('mydomain.key'),
cert: fs.readFileSync( 'mydomain.crt' )
};

const secureServer = https.createServer(options,app).listen(config.portHTTPS);

const io = require('socket.io')(secureServer) // you can add options for socket here

https://151.236.63.10:443无法启用ssl的ip地址。您需要定义域名。对不起,我忘了说它是VPS,我仍然需要定义域名?var io=require(“socket.io”)(https);→ 我应该把它换成→ var io=require(“socket.io”)(服务器)[因此将其放在创建之后]。顺便说一句,我会把所有像443这样的东西放在一个配置文件中。@cagliostro非常感谢你,伙计!成功了!“var io=require(“socket.io”)(server)“如何将其放在配置文件中?”@klnx只需将参数放在配置文件(ex:config.js)中,并导出和对象,将所有var放在其中。例如:module.exports={https:443}在服务器文件中导入后,使用config.https代替443。只是更干净。