Узел Socketio Websocket на поддомене - PullRequest
1 голос
/ 03 апреля 2019

Уже несколько недель я пытаюсь реализовать свою функциональность websocket на моем производственном (ubuntu) сервере (nginx). Мои веб-сокеты работают локально, но я получаю ошибки при работе.

Мой socket.js выглядит так:

var fs = require('fs');
var options = {
    type: "local",
    key: fs.readFileSync("/etc/nginx/ssl/sub.domain.com/467605/server.key"),
    cert: fs.readFileSync("/etc/nginx/ssl/sub.domain.com/467605/server.crt")
};
if (options.type == 'dev') {
    var app = require('http').createServer(handler);
} else {
    var app = require('http').createServer(options,handler);
}
var io    = require('socket.io')(app);
var Redis = require('ioredis');
var redis = new Redis();

function handler(req, res) {
    res.writeHead(200);
    res.end('');
}

io.on('connection', function(socket) {});

// Redis UserSignedUp Channel, Channel if user signs up
var redisUserSignedUp = new Redis();

redisUserSignedUp.subscribe('signed-up-channel');

redisUserSignedUp.on('message', function(channel, message) {
    message = JSON.parse(message);
    io.emit(channel + ':' + message.event, message.data);
});
// run server on port 3333
app.listen(3333, function () {
    console.log('Server running!');
});

My Event.js выглядит так:

const socket = io('sub.domain.com:3333', {
    secure: true
});

// ... works locally
socket.on('signed-in-channel:App\\Events\\UserSignedIn', (data) => {
    this.signedInUsers = data.username;
    this.$toasted.info('Success: ' + data.username, {
        theme: "primary",
        duration: 10000
    });
});

Если я сделаю это в моем Event.js:

const socket = io('sub.domain.com:3333', { secure: true });

Я получаю эту ошибку:

https://sub.domain.com:3000/socket.io/?EIO=3&transport=polling&t=MdZoLnn Net :: ERR_SSL_PROTOCOL_ERROR

Где, как будто я слежу за сервером ip вот так:

const socket = io('123.123.123.123:3333', { secure: true });

Я получаю эту ошибку:

https://123.123.123.123:3333/socket.io/?EIO=3&transport=polling&t=MdZpRnE Net :: ERR_CONNECTION_TIMED_OUT

На сайте есть зашифрованный ssl-сертификат, далее веб-сервер - nginx, а os - ubuntu. В моем локальном окне (wamp) он работает, начиная с узла socket.js.

...