Javascript SOCKET.IO侦听HTTPS
我的应用程序带有http,但我想添加https,但我不知道如何在socket.io上启用https。在'require('socket.io)(https…)'socket.io启动404错误中替换http时出现的问题Javascript SOCKET.IO侦听HTTPS,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我的应用程序带有http,但我想添加https,但我不知道如何在socket.io上启用https。在'require('socket.io)(https…)'socket.io启动404错误中替换http时出现的问题 const http = require('http').Server(app); const io = require('socket.io')(http, { pingInterval: 2000, pingTimeout: 7000,}); var https = requ
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}`);
});
首先,你需要
生成密钥和证书后,您可以按如下方式编码:
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'))
};
这是我的https选项。我目前使用的是:
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
const fs=require('fs');
常量选项={
对,对,
key:fs.readFileSync('/privkey.pem'),
证书:fs.readFileSync('/fullchain.pem')};
const app=require('https')。createServer(选项);
常量io=require('socket.io')(应用程序);
io.on('连接',套接字=>{
控制台日志(“新连接”);
socket.on('ask',函数(msg){
//你的代码在这里
});
});
app.listen()//EG8080,整数
您是否创建了证书和密钥?还要注意,在我的代码中,端口是8888。你可以根据自己的口味改变它。在您的代码中,没有httpsOptions。它应该像我的代码中的sloption:)看图片。我添加了证书选项。错误在第4行抛出。我想知道有什么代码…你能通过facebook或其他形式与我联系吗?你可以为这个问题打开一个聊天室。