Skip to content

Commit 338d686

Browse files
committed
feat: update Socket.IO polling configuration and enhance Docker setup
- Modified docker-compose.prod.yml to clarify WebSocket production settings. - Added environment variable NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY to Makefile for production and development modes. - Refactored nuxt.config.ts to improve Socket.IO polling behavior based on new environment variable, allowing for dynamic configuration without rebuilds.
1 parent 41f3a5d commit 338d686

3 files changed

Lines changed: 18 additions & 6 deletions

File tree

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ simulation: ## Start production environment in simulation mode
5454
@docker run --rm -it \
5555
$(DOCKER_SOCKET_MOUNT) \
5656
-e NODE_ENV=production \
57+
-e NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=false \
5758
-e NODE_TLS_REJECT_UNAUTHORIZED=0 \
5859
-e GIT_BRANCH=$(GIT_BRANCH) \
5960
-e GIT_COMMIT=$(GIT_COMMIT) \
@@ -86,6 +87,7 @@ prod: ## Start production environment
8687
@docker run --rm -it \
8788
$(DOCKER_SOCKET_MOUNT) \
8889
-e NODE_ENV=production \
90+
-e NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=false \
8991
-e NODE_TLS_REJECT_UNAUTHORIZED=0 \
9092
-e GIT_BRANCH=$(GIT_BRANCH) \
9193
-e GIT_COMMIT=$(GIT_COMMIT) \
@@ -110,6 +112,7 @@ dev: ## Start development environment
110112
@docker run --rm -it \
111113
$(DOCKER_SOCKET_MOUNT) \
112114
-e NODE_ENV=development \
115+
-e NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=true \
113116
-e NODE_TLS_REJECT_UNAUTHORIZED=0 \
114117
-e GIT_BRANCH=$(GIT_BRANCH) \
115118
-e GIT_COMMIT=$(GIT_COMMIT) \

apps/web/nuxt.config.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,20 @@ const SESAME_APP_API_URL = process.env.SESAME_APP_API_URL || 'http://127.0.0.1:4
1010
const SESAME_ALLOWED_HOSTS = process.env.SESAME_ALLOWED_HOSTS ? process.env.SESAME_ALLOWED_HOSTS.split(',') : []
1111
const API_PROXY_TARGET = SESAME_APP_API_URL.replace(/\/$/, '')
1212
const IS_DEV = process.env.NODE_ENV === 'development'
13-
/** Par défaut : polling seul en dev (proxy WS cassé), WebSocket en prod. Surcharge : SESAME_SOCKET_IO_POLLING_ONLY=0|1 */
14-
const SOCKET_IO_POLLING_ONLY =
15-
process.env.SESAME_SOCKET_IO_POLLING_ONLY !== undefined
16-
? /^(1|true|yes|on)$/i.test(process.env.SESAME_SOCKET_IO_POLLING_ONLY)
17-
: IS_DEV
13+
/**
14+
* Polling seul si true (dev). Surcharges runtime (sans rebuild) : NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY.
15+
* Build : SESAME_SOCKET_IO_POLLING_ONLY ou défaut IS_DEV.
16+
*/
17+
const SOCKET_IO_POLLING_ONLY = (() => {
18+
const fromNuxtPublic = process.env.NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY
19+
if (fromNuxtPublic !== undefined) {
20+
return /^(1|true|yes|on)$/i.test(fromNuxtPublic)
21+
}
22+
if (process.env.SESAME_SOCKET_IO_POLLING_ONLY !== undefined) {
23+
return /^(1|true|yes|on)$/i.test(process.env.SESAME_SOCKET_IO_POLLING_ONLY)
24+
}
25+
return IS_DEV
26+
})()
1827

1928
if (SESAME_ALLOWED_HOSTS.length === 0 && !/localhost/.test(SESAME_APP_API_URL) && IS_DEV) {
2029
SESAME_ALLOWED_HOSTS.push(new URL(SESAME_APP_API_URL).hostname)

docker-compose.prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# docker network create reverse # si reverse-proxy externe
77
#
88
# Socket.IO : le client utilise `/api/socket.io` (même origine que le front).
9-
# apps/web/.env : ne pas définir SESAME_SOCKET_IO_POLLING_ONLY (ou =0) → WebSocket en prod.
9+
# WebSocket prod : NUXT_PUBLIC_SOCKET_IO_POLLING_ONLY=false (défaut si NODE_ENV=production au build).
1010
# Reverse-proxy : router tout le trafic (HTTP + WebSocket) vers le port Nuxt (3000) ;
1111
# Nuxt proxifie `/api/**` vers l'API interne (SESAME_APP_API_URL=http://127.0.0.1:4000).
1212
#

0 commit comments

Comments
 (0)