пожалуйста, помогите мне сокет nestjs, почему ERR_SSL_PROTOCOL_ERROR?

#node.js #socket.io #nestjs

Вопрос:

Я не спал всю ночь из-за этой проблемы. Я думаю, что сделал все, что мог. Наш интерфейс использует https, и серверная часть также использует https. В настоящее время api работает хорошо, но сервер чата продолжает выдавать ошибки ERR_SSL_PROTOCOL_ERROR.

Передним концом является использование нашей комнаты чата https://dongmul.Подключение к магазину:3001/гнездо для чата. Эта проблема, по-видимому, решается путем запроса http://dongmul.Подключение к магазину:3001/чат, но создает только новую ошибку, называемую смешанным контентом.

-Серверная часть nginx (/etc/nginx/сайты-доступно/по умолчанию)-

 server {
            server_name dongmul.shop;
            location / {
                        proxy_set_header HOST $host;
                        proxy_pass https://127.0.0.1:3000;
                        proxy_redirect off;

           }

            listen 443 ssl;
            ssl_certificate /etc/letsencrypt/live/dongmul.shop/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/dongmul.shop/privkey.pem;
            include /etc/letsencrypt/options-ssl-nginx.conf;
            ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
            server_name www.dongmul.shop;
            location / {
                        proxy_set_header HOST $host;
                        proxy_pass https://127.0.0.1:3000;
                        proxy_redirect off;
           }

            listen 443 ssl;
            ssl_certificate /etc/letsencrypt/live/dongmul.shop/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/dongmul.shop/privkey.pem;
            include /etc/letsencrypt/options-ssl-nginx.conf;
            ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 80 is 443
server {
            server_name dongmul.shop www.dongmul.shop;
            listen 80;
            listen [::]:80;
            return 301 https://$host$request_uri;
}
-- INSERT --                                                   
 

-Серверная часть main.ts-

 import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as fs from 'fs';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';

async function bootstrap() {
    const httpsOptions = {
        key: fs.readFileSync(
            '/etc/letsencrypt/live/dongmul.shop/privkey.pem',
            'utf8'
        ),
        cert: fs.readFileSync(
            '/etc/letsencrypt/live/dongmul.shop/cert.pem',
            'utf8'
        ),
        ca: fs.readFileSync(
            '/etc/letsencrypt/live/dongmul.shop/chain.pem',
            'utf8'
        )
    };
    const app = await NestFactory.create<NestExpressApplication>(AppModule, {
        cors: true,
        httpsOptions
    });

    app.useStaticAssets(join(__dirname, '..', 'public'));
    app.useGlobalPipes(
        new ValidationPipe({
            whitelist: true,
            forbidNonWhitelisted: true,
            transform: true
        })
    );
    await app.listen(3000);
}
bootstrap();

 

-Внутренний чат.шлюз.ts-

 import {
    SubscribeMessage,
    WebSocketGateway,
    OnGatewayInit,
    WebSocketServer,
    OnGatewayConnection,
    OnGatewayDisconnect
} from '@nestjs/websockets';
import { Socket, Server } from 'socket.io';
import { Logger } from '@nestjs/common';
import { ItemChatJoinDto } from './dto/itemChatJoin.dto';
import { ChatService } from './chat.service';
import { ItemChatDto } from './dto/itemChat.dto';
import * as jwt from 'jsonwebtoken';
import { AutoJoinDto } from './dto/autoJoin.dto';
import { KickUserDto } from './dto/kickUser.dto';
import { ExchangeDto } from './dto/exchange.dto';
import { MessageService } from 'src/message/message.service';
import * as fs from 'fs';

// **************************************
// * gateway: chat
// * programer: DongGyun Won
// **************************************
const httpsOptions = {
    key: fs.readFileSync(
        '/etc/letsencrypt/live/dongmul.shop/privkey.pem',
        'utf8'
    ),
    cert: fs.readFileSync(
        '/etc/letsencrypt/live/dongmul.shop/cert.pem',
        'utf8'
    ),
    ca: fs.readFileSync('/etc/letsencrypt/live/dongmul.shop/chain.pem', 'utf8')
};
@WebSocketGateway(3001, {
    namespace: '/chatting',
    secure: true,
    rejectUnauthorized: true,
    httpsOptions
})
export class ChatGateway { ... }
 

Комментарии:

1. Я решил эту проблему. Я только что удалил номер порта шлюза WebSocket. После этого вы можете использовать порт 3000 с api.