Я настроил настройку сокета на моем сервере, он правильно работает с HTTP, но не работает с HTTPS.
Я пробовал все решения, но не повезло. Я уже создал файл ключа и сертификата, выполнив следующие команды:
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
тогда :
var options = {
key: fs.readFileSync('./key.pem', 'utf8'),
cert: fs.readFileSync('./server.crt', 'utf8')
};
Но это дает мне ошибку:
Server.js
var express = require('express'); //Node
var httpsapp = express();//Node
var httpapp = express(); //Node
fs = require('fs'); //
var ip = require("ip");
var underscore = require("underscore");
var _ = require('lodash');
options = {
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./server.crt')
}
http = require('http').createServer(httpapp)
httpsserver = require('https').createServer(options, httpsapp);
io = require('socket.io').listen(http);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('chatMessage','deleteMessageHard');
redis.on('message', function (channel, message) {
console.info( ip.address() );
if (channel == 'chatMessage') {
io.emit('messageFound', {
message: message
});
}
console.info(channel);
if (channel == 'deleteMessageHard') {
io.emit('deleteHardChatFound', {
message: message
});
}
});
var connectedUsers = [];
var connectedUsersObj = {};
io.on('connection', function (socket) {
//Login
socket.on('login', function (data) {
var user_id = parseInt(data.id);
var user = {
"user_id": data.id,
"socket_id" : socket.id,
}
connectedUsers.push(user);
});
//Logout
socket.on('disconnect', function(){
var User = _.find(connectedUsers, {socket_id: socket.id});
});
socket.on('Typing', function (message) {
var TypingFire = true;
console.info('Typing Event Found');
console.info(message);
//io.emit('TypingFire', message);
socket.broadcast.emit('TypingFire', message);
});
socket.on('stopTyping', function (message) {
var TypingOff = true;
console.info('stopTyping Event Found');
//socket.emit('TypingOff', message);
socket.broadcast.emit('TypingOff', message);
});
});
httpsserver.listen(3002,'0.0.0.0'); //HTTPS
http.listen(3005,'0.0.0.0'); //HTTP
socket.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<title>Socket</title>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<h1>HI</h1>
<input type = "text" id = "Typing">
<script>
var socket = io('https://18.222.8.81:3002');
$("#Typing").keyup(function(){
socket.emit('Typing', { hello: 'world' });
});
socket.on('messageFound', function (data) {
console.info(data);
});
</script>
</body>
</html>
Я не знаю, что в этом отсутствует. Любая помощь будет оценена.
Вы имеете в виду под кружком 0 ()? @Quezler
крайний левый
@Quezler, я добавил снимок экрана выше в свой вопрос
Не могли бы вы также поделиться выводом вкладки сети?
Если вы внимательно понаблюдаете, ваш сервер socket.io прослушивает http, а ваш клиент / браузер пытается подключиться к https.
io = require('socket.io').listen(http); измените эту строку на httpsserver@Quezler Я добавил вкладку сети выше в свой вопрос
@MukeshSharma, я пробовал https, как вы сказали, но та же проблема.





Что отображается при нажатии на треугольник в окне консоли?