套接字io,node.js
我会尽我所能解释我自己 我有一个node.js服务器,我想添加socket.io。我设法让它在http上运行,但在https上运行时遇到了一些问题 服务器:套接字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' );
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。只是更干净。