Пожалуйста, помогите мне, большое спасибо !!!!
На моем локальном хосте все прошло отлично, но теперь я получил все на своем сервере, чтобы посмотреть, как он работает в сети, и у него есть проблема.
GET https://mydomain.io:8890/socket.io/?userid=5b344be12820260db552b202&room=5c347250ac210c52bc542f12&EIO=3&transport=polling&t=MYV9V2s net::ERR_TIMED_OUT
Не удалось загрузить ресурс: net :: ERR_TIMED_OUT
debug = socket.io * узел server.js
[root@litespeed public_html]# debug=socket.io* node server.js
Express server listening on port 8890
{ message: 'in',
sender: '5b344be12820260db552b202',
message_id: '5c526142ac210c415f5422e2' }
{ message: 'sdasd',
sender: '5b344be12820260db552b202',
receive: '5c36f45fac210c6cd07f0b32',
message_id: '5c526142ac210c415f5422e2' }
Информационный сервер
- Npm версия 6.5.0
- Открытый порт 8890
- узел v 11.8.0
- socket.io
- Redis 5.0.3(00000000/0) 64 бит - работает в автономном режиме - порт: 6379
Я не знаю, как решить эту ошибку
Вот мой код сервера - server.js
var crypto = require('crypto');
var fs = require("fs");
var https = require("https");
var Redis = require('ioredis');
var redis = new Redis();
var users = {};
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/mydomain.io/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/mydomain.io/fullchain.pem')
};
var express = require("express");
var app = express();
var server = https.createServer(options, app).listen(8890, function () {
console.log("Express server listening on port " + 8890);
});
var io = require('socket.io').listen(server);
io.on('connection', function (socket) {
console.log("New connect");
var userId = socket.handshake.query.userid;
var room = socket.handshake.query.room;
socket.join(room);
if (userId in users) {
//fail
console.log('Already exist');
} else {
console.log("Added");
users[userId] = socket;
}
//disconnect
socket.on('disconnect', function () {
console.log(socket.id + ': disconnect');
delete users[userId];
});
});
redis.subscribe('chat', 'focus', function (err, count) {
// Now we are subscribed to both the 'news' and 'music' channels.
// `count` represents the number of channels we are currently subscribed to.
});
redis.on("message", function (channel, message) {
var message = JSON.parse(message);
console.log(message);
if (channel == 'chat') {
var receive = message.receive;
var sender = message.sender;
var senderSocket = users[sender] || null;
var receiveSocket = users[receive] || null;
if (receiveSocket) {
receiveSocket.join(message.message_id);
}
if (senderSocket) {
senderSocket.join(message.message_id);
// io.to(users[message.receive].id).emit(channel, message);
io.to(message.message_id).emit(channel, message);
console.log("Message was succefully sent!");
}
} else if (channel == 'focus') {
var senderSocket = users[message.sender] || null;
if (senderSocket) {
senderSocket.broadcast.to(message.message_id).emit(channel, message);
}
}
});
Вот мой код клиента
$(document).ready(function () {
var userid = '5b344be12820260db552b202';//anything you like
var room = '5c347250ac210c52bc542f12';//anything you like
var socket = io.connect('https://mydomain.io:8890', {query: "userid=" + userid + "&room=" + room});
socket.on('chat', function (data) {
console.log('123455');
var owner = '5b344be12820260db552b202';
$("#last-msg-" + data.message_id).html(data.message);
var clone_elem = $('#' + data.message_id).clone();
$('#' + data.message_id).remove();
if (owner == data.sender) {
$("#new-message-" + data.message_id).append('<div class="line pull-right clearfix"><span>' + data.message + '</span></div>');
} else {
$("#new-message-" + data.message_id).append('<div class="line pull-left clearfix"><span>' + data.message + '</span></div>');
if (data.message_id != '5c347250ac210c52bc542f12') {
clone_elem.addClass('no-read');
} else {
$.ajax({
url: '/site/read',
type: "POST",
data: "id=" + data.message_id,
success: function (data) {
}
});
}
document.getElementById("audio-" + data.receive).play();
}
$('ul.list-group').prepend(clone_elem);
scrollBottom();
});
socket.on('focus', function (data) {
if ('5c347250ac210c52bc542f12' == data.message_id) {
if (data.message == 'in') {
$("#chatting").show();
} else if (data.message == 'out') {
$("#chatting").hide();
}
}
});
});
Redis connect
'redis' => [
'class' => 'yii\redis\Connection',
'hostname' => 'localhost',
'port' => 6379,
'database' => 0
],