简体   繁体   English

SOCKET.IO 监听 HTTPS

[英]SOCKET.IO LISTEN HTTPS

i had my app with http, but i want add https, but i don't know how enable https on socket.io.我的应用程序带有 http,但我想添加 https,但我不知道如何在 socket.io 上启用 https。 The problem when i replaced http in 'require('socket.io)(https ....)' socket.io launch 404 error.当我在 'require('socket.io)(https ....)' socket.io 中替换 http 时的问题启动 404 错误。

const http = require('http').Server(app);
const io = require('socket.io')(http, { pingInterval: 2000, pingTimeout: 7000,});
var https = require('https');
var fs = require('fs');

io.on('connect', socket => {
    socket.on('ask', function(msg) {
        search
            .query(msg, socket.user, socket.token)
            .then(result => {
                socket.emit('response', result);
            })
            .catch(err => {
                console.log(err);
                socket.emit('response', {
                    msg: { text: "Lo siento, no puedo entender eso " },
                    type: 'error',
                });
            });
    });
    skills.registerClient(socket, socket.user).catch(err => {
        console.warn('Failed to register client', err);
    });
});

const port = await global.db.getGlobalValue('port');
    http.listen(port, () => {
        console.log(`Server started on http://localhost:${port}`);
    });
    const sslPort = '1443';
    const server = https.createServer(httpsOptions, app)
    .listen(sslPort, () => {
        console.log(`Https server on https://localhost:${sslPort}`);
    });

First, you need to create cert and key for ssl .首先,您需要为 ssl 创建证书和密钥

After key and cert are generated, you can code like the following:生成密钥和证书后,您可以编写如下代码:

const express = require('express')
const https = require('https')
const fs = require('fs')
const port = 8888
const cert = fs.readFileSync('/path/to/your_cert.cert')
const key = fs.readFileSync('/path/to/your_key.key')

const SSLOption = {
   key, cert
}
app = express()
let server = https.createServer(SSLOption, app)

server.listen(port, () => {
   console.log('server started on port: ' + port)
})

app.get('/', (req, res) => {
   res.send('Working good...')
})

const io = require('socket.io')(server)

io.on('connection', (socket) => {
  console.log(socket)
})
var httpsOptions = {
    key: fs.readFileSync(path.join(__dirname + '/ssl/localhost-key.pem')),
    cert: fs.readFileSync(path.join(__dirname + '/ssl/localhost.pem'))
  };

This is my httpsOptions.这是我的 httpsOptions。

I am Currently using this:我目前正在使用这个:

const fs = require('fs'); 
const options = {
    rejectUnauthorized: true,
    key: fs.readFileSync('<SSL KEY PATH>/privkey.pem'),
    cert: fs.readFileSync('<SSL CERT PATH>/fullchain.pem')};
const app = require('https').createServer(options);
const io = require('socket.io')(app);

io.on('connection', socket => {
      console.log("New Connection");
      socket.on('ask', function(msg) {
          //your code here
      });
});
app.listen(<PORT>); //e. g. 8080, Integer

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM