update view message

This commit is contained in:
Admin 2025-09-15 13:02:39 +07:00
parent 45c2093d05
commit ebd81e11a2
6 changed files with 75 additions and 55 deletions

View File

@ -8,14 +8,15 @@ import { BadRequestExceptionFilter } from './system/filters/bad-request-exceptio
import { AppValidationPipes } from './system/pipes/app-validation-pipe';
import * as fs from 'fs';
import { SocketIoAdapter } from './socket-adapter';
async function bootstrap() {
const httpsOptions = {
key: fs.readFileSync('ssl/key.pem'),
cert: fs.readFileSync('ssl/cert.pem'),
key: fs.readFileSync('ssl/localhost+1-key.pem'),
cert: fs.readFileSync('ssl/localhost+1.pem'),
};
const app = await NestFactory.create(AppModule);
const app = await NestFactory.create(AppModule, { httpsOptions });
const prefix_version = process.env.PREFIX_VERSION;
@ -53,7 +54,12 @@ async function bootstrap() {
useContainer(app.select(AppModule), { fallbackOnErrors: true });
await app.listen(Number(process.env.APP_PORT));
await app.listen(Number(process.env.APP_API_PORT));
// ===== App cho WebSocket (WS hoặc WSS) =====
const wsApp = await NestFactory.create(AppModule);
wsApp.useWebSocketAdapter(new SocketIoAdapter(wsApp));
await wsApp.listen(Number(process.env.APP_SOCKET_PORT));
}
bootstrap();

View File

@ -0,0 +1,12 @@
import { IoAdapter } from '@nestjs/platform-socket.io';
export class SocketIoAdapter extends IoAdapter {
createIOServer(port: number, options?: any): any {
const cors = {
origin: '*',
methods: ['GET', 'POST'],
credentials: true,
};
return super.createIOServer(port, { ...options, cors });
}
}

View File

@ -1,23 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDvTCCAqWgAwIBAgIUV9payTNbqF6ZM2mCjfPLqSIicKwwDQYJKoZIhvcNAQEL
BQAwbjELMAkGA1UEBhMCVk4xCzAJBgNVBAgMAlZOMQswCQYDVQQHDAJWTjELMAkG
A1UECgwCVk4xCzAJBgNVBAsMAlZOMQswCQYDVQQDDAJWTjEeMBwGCSqGSIb3DQEJ
ARYPYWRtaW5AZ21haWwuY29tMB4XDTI1MDgwNjA5MDQyMVoXDTI2MDgwNjA5MDQy
MVowbjELMAkGA1UEBhMCVk4xCzAJBgNVBAgMAlZOMQswCQYDVQQHDAJWTjELMAkG
A1UECgwCVk4xCzAJBgNVBAsMAlZOMQswCQYDVQQDDAJWTjEeMBwGCSqGSIb3DQEJ
ARYPYWRtaW5AZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAwb6Ze/+uLOC2vHZZwH0BeTLCPesBf8vgHkvU6wmkPgDl9ulY5XWJxVhiBya3
tkIZFLUleejaz+9ckhK6USZQX3iTlkZ57YW1w2VhCCH0/XCGwEteRX1JaREzJDUm
u5z+5vekcDSvMTmFgu4Qc23Z2PSW2oN42dae3iYpm/StMT78GpGc4bayZ7KX7FaY
rmB7bEF2/rGJRpVWBITi8zxT5ZOcERbk0KSjbzcdwoa98C5OVF8U6aHvkjfKm6qE
LjJz8JgV/QcLahM7gK+5b1rGYWT5EYslm2+Wik2CjDzOVDq0TpqZNLynA+HCszSp
9RVTfLciIRsk7ppA76SHI4nkQwIDAQABo1MwUTAdBgNVHQ4EFgQUNQ84Z6IsYPMv
AJfGXKekSp/lFiwwHwYDVR0jBBgwFoAUNQ84Z6IsYPMvAJfGXKekSp/lFiwwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAfkTLU1+B/VfNTYbzgSJF
8pABU+PfaXjFqL1Wrwg4v6q4qttaTVnUuwNDwmBTy36uMMrQ5BEGVlHON6vw188N
y1LMOGcFXnmHd0cmczi7H0OXLYzfGu7a756TePPp45Hl/PWLx8SFvd09rlGp34NK
E1H/2C8sbbJEqa9EcRKx3q1DMF+NWB436patnxdQOlI2cpIcEz4InbpoMTBoTPje
MmPsDIK81beLzVZ/JSRvShfncSdwGGxWWRZnUbKWbJXU4cKU3qCscKBTyB8Kmok0
S6XumKi3HNSzAwFvrbzxaUilrTkOWO2QNp8nlkH8ZDfGE0ieCDvw+S1b0d4h7VKU
Jg==
-----END CERTIFICATE-----

View File

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDBvpl7/64s4La8
dlnAfQF5MsI96wF/y+AeS9TrCaQ+AOX26VjldYnFWGIHJre2QhkUtSV56NrP71yS
ErpRJlBfeJOWRnnthbXDZWEIIfT9cIbAS15FfUlpETMkNSa7nP7m96RwNK8xOYWC
7hBzbdnY9Jbag3jZ1p7eJimb9K0xPvwakZzhtrJnspfsVpiuYHtsQXb+sYlGlVYE
hOLzPFPlk5wRFuTQpKNvNx3Chr3wLk5UXxTpoe+SN8qbqoQuMnPwmBX9BwtqEzuA
r7lvWsZhZPkRiyWbb5aKTYKMPM5UOrROmpk0vKcD4cKzNKn1FVN8tyIhGyTumkDv
pIcjieRDAgMBAAECggEAHKFCRBEd13LjfgkNLUUrtRG7o3O5Vn21ojR5g7v6gdEX
KnwED3BlifyMC9t8VVoCI826+n9e6lBIQSu0Ta6YPOtv/8ptVRynpfaytoVyEwuQ
VhUtGp6vfO+2O3kBPsMt5cqdiZk3dFI4OQdd9fi7MvS94A+CicpN0q0YA/xNpZOT
XaTXV+opBit+evy356R+pzOuBkjHPLDt3zkU0HmREiSi3fzd7bAk/H03LAVtV8NH
cAqF3jDDuC+uL7v5Mltkhi/FmF58px/qs94HcsS6P2GKv0fPybsy+q3ma4HcLA1O
Em6CTOhrzoeRphfjHavEjpdlgWr1bfdGX+VS76UICQKBgQD6hQ8lZRd8d+cVe37R
IvIMfYV+Mu0NhvdaiXAEnnGxxPdql/npF03kjmhyZ+NpXtkRw3Padel/L/D2yk6U
Meosivl379GLNxIFTpZCTJC4LyuatVlTFrGPphD/LBnuLDwcFVEYtT92MCp4QW+S
Rbffkl7GifV4kaoyf+Kh34JaKQKBgQDF+5edQRRJ2JJ8yM9ZkdgikqEip7d9ksEV
w+9RaP2BGxR3t9kdwZxa3JKRQegJL6f4PS1Q0qDSlmTYuTvf9S61B6OQ+exYGI5B
PNNXQwi64vejF9x3FQu5XSYODPsPr9bjMpIcKCHNgKnlsz71/kzOe2PC8GOm3eP6
8z+ASelwiwKBgQDlTfOuI9kaidmPtUk//n+VZTNSbyTCE/7G9TP+VlT1Bbf97nvG
mhknEh6SUXs7kKCZ/NBHb1Q5odUq38SLKyEQgmiUGoQvrEmnZ+Zraw+wNyTvZ/0J
66S9OqEmH+TgN8cRYYWoWwZqlO3awvJv7ba/QofTrKVuJc6miJ4V0rLK+QKBgGM6
gTfo2VFVwb3XK82Zwnk5gpeK9fVzK2FMTdNAyuX9e5mxRJmcY1BLAw7YuIJ6JzbM
+rxqhP5nMG5LEM5j5aAIDxvnl2RkElByOv6ec26vuSw+Flp86t5h6GPcb6ziFdLT
ktWX67FDDmQ5HZJPfZFz2IFo2JlW1x/88NPMt7qXAoGAWTi9QIKR0XKzljEvdwJQ
B2j0/u3cDXlLwVhKAzbDrRFoKR7Yna/1Sfrg649CiNCFQ5bGx6tjMBEJpXpsMjcE
NmcRw4ExAMBAS6WtTezNtx2dN2StCKLMfQsfoMQ2J014fnqw0pgJswxyWMbR1LIS
vvSukbujOOAEIllSpEIsaVM=
-----END PRIVATE KEY-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDzbfy5PEmRtQY0
V1wqQutWfUc3mCVTZaXym3RY2EHUBckM5iO5jf81gr0E4+CFaqaCiJukUns43WJg
CTwaoNzSgeylsicRqzLvKy8JJWf0A73ebyvxgwNR25+6D0svWj5b0kdSDUIp6nc5
x1+nPoF2JbqrPOrQg6aimSerCDnSl8j2JIaY08oBt2sF7pPyiAicDKs/dTrJXG3p
pEdLfCwdxP2RSDaWCZBKo2Xast9Mx8mgfFdpHUGznEfk/R7jQcaa2eYqi3T19+gf
ACAFGARj50UJQRAkp347LfDr0RMBiq5LMxf9+GUVWc+N3dw4l2ABH6CXwLaMQ+tK
SJkmmHQTAgMBAAECggEAaO5uVAKyy8Y2iHVn2yfBfiS+gC5rWImmgO+VtX5y0cw0
oATMPX4CFrTmeaco7xnL8NSmEq0jRJ3ZfAA/ElNpHKy4r6wdvzYG3KXGvrCLINpE
DA/r501MLwr2zSMui5jg7H+2Ep54eM0C27sfdl4xPBaDYrD9nyhAujI+sTD4i9fe
pIC0vXzw+c7IdjUa8SKj3NohnwESgNfnTQgWcTB/MEckCKLgFflN8+15oBmeXsKj
1Y2MuEo94aHhwT6jxDXirKlIWNtzNFcTZJeXWMhfOdVHjj7RQ4yDisDunXIoV3DP
RrSS0u60DzSkEKyQBwAefpWvx4jONRjaroSqtIIdYQKBgQD8GftqYNppr4HI+fiY
5l78spt3qo4Z2QfdNFSbGQMgivWTlwhJ1dJhalwTc3MI1KAwTE8tp49ef4jKQFTj
gqiRiu7eERSMMs7eI8DZRkDgn01G0N8EupJuByqza4CjirNV1ISoXA9HnWPhmsDA
e/3qQ/t2izkKwVeoaBChjO2lSwKBgQD3MazOKEN7DA3ZPj2PQzTWDWHGFb1EVeSY
M/wSZ4NRantHsGw/0rUbzHAouOLgRVzE4Pfpopuo/ZkNI1JMIl06L7COCKW5Af5J
gjmap9yhlQo0IADCjZIk/3eZ8qH6CwxHadU5t+YwLFwLzlEG5fBQbvilPn4DbC3/
plM25XjXWQKBgEnfQzDU2KuHZjyCIzqKpuLdY3kZXTJtykQjhXc9SRFMJtHsu90G
7vLku75nYhoAVEBS3BDAvN4v+OFrIHTaYJLlZ0FjN+YtLTkiuOvyDijEBVzu76rv
EOF08CpLIhLKHerUr1q2PzP5Br+hHUJKEwmGijUebsScCxeqBtWP+kMpAoGAPmx2
/SDB2cLzhFbpaNJJ93wtor4+q5EdRyppj6RAT0EanMH6tCtbvQdlk4MNGCGsCbPe
J0v/Dy/rhJvU3pEXBeihJ10brJrKQnn2Xg3h85QVnZAvYPIrY9h3tZLGQMSldytM
w2SjZqrtG7YgVCOhCk7bz672V5rsCtFP1l8goxECgYBTwI0A3h1VCwIce5GNHkxt
whFO9uV8nIL6GsDaMi1My6krn2TADRYjpM960GKWyI7sx4kVhWw37u7w427G+3qt
27/FrbCU1eNSzbInxigCFkLiLkVq2bzVR1Vw+7XhBlDFKpnw8NVruNAy1HNNtsR4
VoKCR6lTe/Q6DaImnoAwCA==
-----END PRIVATE KEY-----

View File

@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEPTCCAqWgAwIBAgIRAM9C/d+4FqfdoDcnYqCbsoowDQYJKoZIhvcNAQELBQAw
ezEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSgwJgYDVQQLDB9hZG1p
bkBNYWNCb29rLUFpci5sb2NhbCAoQWRtaW4pMS8wLQYDVQQDDCZta2NlcnQgYWRt
aW5ATWFjQm9vay1BaXIubG9jYWwgKEFkbWluKTAeFw0yNTA5MTUwNTUxMzNaFw0y
NzEyMTUwNTUxMzNaMFMxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0
aWZpY2F0ZTEoMCYGA1UECwwfYWRtaW5ATWFjQm9vay1BaXIubG9jYWwgKEFkbWlu
KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPNt/Lk8SZG1BjRXXCpC
61Z9RzeYJVNlpfKbdFjYQdQFyQzmI7mN/zWCvQTj4IVqpoKIm6RSezjdYmAJPBqg
3NKB7KWyJxGrMu8rLwklZ/QDvd5vK/GDA1Hbn7oPSy9aPlvSR1INQinqdznHX6c+
gXYluqs86tCDpqKZJ6sIOdKXyPYkhpjTygG3awXuk/KICJwMqz91OslcbemkR0t8
LB3E/ZFINpYJkEqjZdqy30zHyaB8V2kdQbOcR+T9HuNBxprZ5iqLdPX36B8AIAUY
BGPnRQlBECSnfjst8OvREwGKrkszF/34ZRVZz43d3DiXYAEfoJfAtoxD60pImSaY
dBMCAwEAAaNkMGIwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB
MB8GA1UdIwQYMBaAFH/NzzIPBK6kGM9mtBRusa7xMfO0MBoGA1UdEQQTMBGCCWxv
Y2FsaG9zdIcEfwAAATANBgkqhkiG9w0BAQsFAAOCAYEAjqkcxq2vn+N4CgfZKCYX
xPMAgX3hriy//yi5HH2mE8UKbnJQOJbG6YtqPuGqBqxCBdeOfvU0mcZrtKwzdpZ+
4EjTPEXTDXUIclSVUPXsPbb02NyQ8LsVTRCLjZH9xBmoxV8lL5qxIL4ey+f6iE1I
3pkTbiHvSmDseLbPCTmdZwdvh+qXWcHOG1guXx2KEP6/8ECeDEqy0UBwv2VabZcv
ErAs37VxXFppc8QtSEP3Gl8pTE3FIy5qAtQhIwnaH1+YzdtjAtQ6GHzAMJaq0RqH
3IWuyobQNzhwX6NTnwlKZsc5bYeDWNxvPz2ed/D/5tmK2Mvx21qr2Hq4v0rVDEV6
xv3o5frX8LG+quV8MnAZlnBcDRmk40HxgsQFUU+vHi0hOxOIcE5twgFjxXRt2i37
idTpuXncPNdglMUhi3szdpjwd1TxbNhDUqXpJt8fywi4HpdLxj8T7ZC/WzQK9A9B
wxiE1S3jker6pc7sLs8Gn47GRMy0PwTaZ9VQsPew/GkD
-----END CERTIFICATE-----