socket.io no https
Bom dia, esses dias me deparei com um problema com socket.io o mesmo funcionava perfeitamente no localhost servidores local no http, atualmente ao subir sua aplicação para web nos deparamos com um problema, maioria dos sistemas é https, ai que demorei um semana para readequar meu codigo para fazer um chat
novo arquivo servidor.js
dentro da pasta tem que conter o arquivo server.key e server.crt o conteudo desses arquivos vem do servidor web, no caso seu servidor de chat
Utilizei a porta 8080, mas fique a vontade para usar a porta que quiser lembrando que a porta tem que estar disponivel no seu servidor
Meu servidor atual na web é compartilhado.
var fs = require(''''fs'''');
const express = require(''''express'''');
const cron = require(''''node-cron'''');
const apps = express();
var options = {
key: fs.readFileSync(''''server.key''''), //nesta opção inserir os dados da key do seu servidor de chat via node
cert: fs.readFileSync(''''server.crt'''') // nesta opção inserir os dados do crt do seu servdiro de chat via node
};
var app = require(''''https'''').createServer(options, apps);
var io = require(''''socket.io'''')(app, {
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true,
}
});
apps.get(''''/'''', (req, res) =>{
res.sendFile(__dirname+''''/index.html'''')
});
let messages =[];
io.on(''''connection'''', socket => {
console.log(`Socket conectado: ${socket.id}`);
socket.emit(''''previousMessages'''', messages );
socket.on(''''sendMessage'''', (data)=>{
messages.push(data);
socket.broadcast.emit(''''receivedMessage'''', data);
})
});
app.listen(8080, function(){
console.log(''''Servidor ligado para a porta 8080'''' );
})
no Cliente
em Laravel
var socket = io.connect(''''https://seuservidor:porta'''');
Funcionando perfeitamente via HTTPS
Espero ter ajudado a quem procura a utilização do biblioteca socket.io e tenha dificuldade a subir para web
novo arquivo servidor.js
dentro da pasta tem que conter o arquivo server.key e server.crt o conteudo desses arquivos vem do servidor web, no caso seu servidor de chat
Utilizei a porta 8080, mas fique a vontade para usar a porta que quiser lembrando que a porta tem que estar disponivel no seu servidor
Meu servidor atual na web é compartilhado.
var fs = require(''''fs'''');
const express = require(''''express'''');
const cron = require(''''node-cron'''');
const apps = express();
var options = {
key: fs.readFileSync(''''server.key''''), //nesta opção inserir os dados da key do seu servidor de chat via node
cert: fs.readFileSync(''''server.crt'''') // nesta opção inserir os dados do crt do seu servdiro de chat via node
};
var app = require(''''https'''').createServer(options, apps);
var io = require(''''socket.io'''')(app, {
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true,
}
});
apps.get(''''/'''', (req, res) =>{
res.sendFile(__dirname+''''/index.html'''')
});
let messages =[];
io.on(''''connection'''', socket => {
console.log(`Socket conectado: ${socket.id}`);
socket.emit(''''previousMessages'''', messages );
socket.on(''''sendMessage'''', (data)=>{
messages.push(data);
socket.broadcast.emit(''''receivedMessage'''', data);
})
});
app.listen(8080, function(){
console.log(''''Servidor ligado para a porta 8080'''' );
})
no Cliente
em Laravel
var socket = io.connect(''''https://seuservidor:porta'''');
Funcionando perfeitamente via HTTPS
Espero ter ajudado a quem procura a utilização do biblioteca socket.io e tenha dificuldade a subir para web
Wellington Santos
Curtidas 0