Список запросов, через которые пришло решение проблемы
- Mixed Content: The page at '' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ''. This request has been blocked; the content must be served over HTTPS.
- websocket node http https net::ERR_CERT_SYMANTEC_LEGACY
- WebSocket Error in connection establishment: net::ERR_CONNECTION_CLOSED
- failed: Error in connection establishment: net::ERR_CONNECTION_RESET
- Failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
- websocket https не работает
- Перестал работать Websocket после перехода на HTTPS. Чего менять?
- Https server with websockets on node.js
- How to setup route for websocket server in express?
HTTP
const express = require('express');
const app = express();
const serverHttp = require('http').createServer(app);
const ioHttp = require('socket.io')(serverHttp);
// create the connection to database
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: '127.0.0.1',
user: 'user_DB',
database: 'name_DB',
password: 'pass_DB',
});
const cfg = {
port_http: 4000,
interval: 1000,
};
serverHttp.listen(cfg.port_http, function(){
console.log('HTTP: Run server NodeJS. Listening on port ' + cfg.port_http);
});
setInterval( function() {
var info = new Date();
ioHttp.emit('anybody', info);
}, cfg.interval);
ioHttp.on('connect', function(socket){
socket.on("quantity_product", function (data) {
var sqlQuantity = connection.query("UPDATE `b_sale_basket` SET `QUANTITY` = "+data.quantity+" WHERE `ID` = "+data.id+" AND `FUSER_ID`="+data.fuser_id+" ");
});
console.log(' <=== Connected! ===> ');
socket.on('disconnect', function(){
console.log(' === OFF === ');
});
});
HTTPS
const fs = require('fs');
const express = require('express');
const app = express();
const options = {
key: fs.readFileSync('/etc/pki/tls/certs/certificate.key'),
cert: fs.readFileSync('/etc/pki/tls/certs/certificate.crt'),
};
const serverHttps = require('https').createServer(options, app);
const ioHttps = require('socket.io')(serverHttps);
const cfg = {
ssl: true,
port_https: 2000,
interval: 1000,
};
// create the connection to database
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: '127.0.0.1',
user: 'user_DB',
database: 'name_DB',
password: 'pass_DB',
});
global.fuser_id = null;
serverHttps.listen(cfg.port_https, function(){
console.log('HTTPS: Run server NodeJS. Listening on port ' + cfg.port_https);
});
/* HTTPS */
// тест работы вебсокетов с функцией date()
// проверка работоспособности соединения
setInterval( function() {
var info = new Date();
ioHttps.emit('anybody', info);
}, cfg.interval);
// контроллер операций с вебсокетами
ioHttps.on('connect', function(socket){
// обновление данных наличия товара в корзине - частный случай применения вебсокетов
socket.on("quantity_product", function (data) {
console.log(data.fuser_id);
// console.log(fuser_id);
var sqlQuantity = connection.query("UPDATE `b_sale_basket` SET `QUANTITY` = "+data.quantity+" WHERE `ID` = "+data.id+" AND `FUSER_ID`="+data.fuser_id+" ");
});
console.log(' <=== Connected! ===> ');
socket.on('disconnect', function(){
console.log(' === OFF === ');
});
});