Задать вопрос
@SergOdinokiy

Почему не соединяться websocket node.js SSL?

Почему не соединяется websocket? Проблема такая локально все работает, порты открыты. Включаю обычный VPN в Opera. Выбрасывает ошибку в консоль net::ERR_TUNNEL_CONNECTION_FAILED если отключаю VPN соединение с socket устанавливается. Но самое интересно что я если обратно включаю VPN соединение с socket не разрывается и socket работает нормально принимает и все передает. В чем может быть проблема? Где я делаю ошибку?

Вот сам socket:
var mysql = require('mysql');
var fs = require( 'fs' );

const ssl ={
    key: fs.readFileSync('../crt/private.key'),
    cert: fs.readFileSync('../crt/domain_name.crt'),
    ca: fs.readFileSync('../crt/chain.crt'),
    requestCert: false,
    rejectUnauthorized: false
};

const express = require('express'),
    app = express(),
    https = require('https').createServer(ssl,app),
    io = require('socket.io').listen(https);

const host = 'site.ru';
const port = 441;
let clients = [];

io.on('connection', socket => {
  //Получение инфы о пользователи
    var regexp = /user=([^&]+)/;
    var GetValue = '';
    if (!!regexp.exec(socket.handshake.url))
        GetValue = regexp.exec(socket.handshake.url)[1];
    var arr =GetValue.split('_'),
        userId =arr[0],
        room=arr[1];
    console.log({'connected':userId,"roomNew":room});
    
    io.sockets.emit('message', {'connected':userId,"roomNew":room})

    clients.push(userId);

    var conn = mysql.createConnection({
        database: 'game',
        host: "localhost",
        user: "root",
        password: "Kx2H5LdJumlqzkxd"
    });
    var sql1 = "UPDATE `user` SET `ontime`=1 WHERE `uid` ="+userId+"";

    conn.query(sql1, function(err, results) {
        if (err) throw err;
        socket.emit({'connected':userId,"roomNew":room});
        console.log("Online-"+userId);
        conn.end();
    });

    //Отправка сообщений всем

    socket.emit('message', message => io.socket.emit({'connected':userId,"roomNew":room}));

    //socket.on('message', message => io.socket.emit({'message': 'HI'}));

    socket.on('message', message => console.info('message', message));


    //Отключение пользователя
    socket.on('disconnect', () => {
        var conn = mysql.createConnection({
            database: 'game',
            host: "localhost",
            user: "root",
            password: "Kx2H5LdJumlqzkxd"
        });
        var sql1 = "UPDATE `user` SET `ontime`=0 WHERE `uid` ="+userId+"";

        conn.query(sql1, function(err, results) {
            if (err) throw err;
            console.log("Ofline-"+userId);
            conn.end();
        });

        clients.splice(clients.indexOf(socket.id), 1);

        io.sockets.emit('message', {'discconnected':userId,"roomOut":room});

        console.log({"discconnected":userId,"roomOut":room});
    })
});
io.on('message', socket => {console.info("ss")});


app.use(express.static(__dirname));

app.get('/', (req, res) => res.render('index'));

//получение количества активных клиентов
app.get('/clients-count', (req, res) => {
    res.json({count: io.clients().server.engine.clientsCount})
});

//отправка сообщения конкретному клиенту по его id
app.post('/client/:id', (req, res) => {
    if (clients.indexOf(req.params.id) !== -1) {
        io.sockets.connected[req.params.id].emit('private message', `Message to client with id ${req.params.id}`);
        return res.status(200).json({ message: `Message was sent to client with id ${req.params.id}` })
    } else return res.status(404).json({ message: 'Client not found' })
});

https.listen(port, host, () => console.log(`Server listens https://${host}:${port}`));
  • Вопрос задан
  • 236 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы