bpolaszek / freddie Goto Github PK
View Code? Open in Web Editor NEWA Mercure Hub, written in PHP (8.1 + ReactPHP)
A Mercure Hub, written in PHP (8.1 + ReactPHP)
Hi everyone.
I'm getting a error using the nginx reverse proxy for freddie bundle, the response from subscriber controller remains pending and i cant get he response header status.
If i sent a request direclty to react server the response header is running.
Request URL:
http://localhost:4001/.well-known/mercure?topic=test
Request Method:
GET
Status Code:
200 OK
Remote Address:
[::1]:4001
Referrer Policy:
strict-origin-when-cross-origin
HTTP/1.1 200 OK
Content-Type: text/event-stream
Server: ReactPHP/1
Date: Sun, 29 Oct 2023 17:41:06 GMT
Transfer-Encoding: chunked
But, if I send a request to the nginx server i cant receive a response from the server, the Chrome DevTools inform the pendins status.
Request URL:
http://localhost:4000/.well-known/mercure?topic=test
Referrer Policy:
strict-origin-when-cross-origin
Follow my nginx configuration
upstream freddie {
server 127.0.0.1:4001;
}
server {
listen 4000;
server_name _;
location / {
# Simple requests
if ($request_method ~* "(GET|POST)") {
add_header "Access-Control-Allow-Origin" *;
}
# Preflighted requests
if ($request_method = OPTIONS ) {
add_header "Access-Control-Allow-Origin" *;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
return 200;
}
proxy_pass http://freddie;
proxy_read_timeout 24h;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Follow nginx debug log:
2023/10/29 18:08:59 [debug] 29#29: *3 http run request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *3 http upstream check client, write event:0, "/.well-known/mercure"
**2023/10/29 18:08:59 [info] 29#29: *3 epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while reading upstream, client: 192.168.0.1, server: _, request: "GET /.well-known/mercure?topic=test HTTP/1.1",** upstream: "http://127.0.0.1:4001/.well-known/mercure?topic=test", host: "localhost:4000"
2023/10/29 18:08:59 [debug] 29#29: *3 finalize http upstream request: 499
2023/10/29 18:08:59 [debug] 29#29: *3 finalize http proxy request
2023/10/29 18:08:59 [debug] 29#29: *3 free rr peer 1 0
2023/10/29 18:08:59 [debug] 29#29: *3 close http upstream connection: 19
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DB54E60, unused: 48
2023/10/29 18:08:59 [debug] 29#29: *3 event timer del: 19: 216919881
2023/10/29 18:08:59 [debug] 29#29: *3 reusable connection: 0
2023/10/29 18:08:59 [debug] 29#29: *3 http upstream temp fd: -1
2023/10/29 18:08:59 [debug] 29#29: *3 http finalize request: 499, "/.well-known/mercure?topic=test" a:1, c:1
2023/10/29 18:08:59 [debug] 29#29: *3 http terminate request count:1
2023/10/29 18:08:59 [debug] 29#29: *3 http terminate cleanup count:1 blk:0
2023/10/29 18:08:59 [debug] 29#29: *3 http posted request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *3 http terminate handler count:1
2023/10/29 18:08:59 [debug] 29#29: *3 http request count:1 blk:0
2023/10/29 18:08:59 [debug] 29#29: *3 http close request
2023/10/29 18:08:59 [debug] 29#29: *3 http log handler
2023/10/29 18:08:59 [debug] 29#29: *3 geoip2 http log handler
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DB72CB0
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DBCA870, unused: 2
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DBB8A00, unused: 5
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DB73CC0, unused: 3022
2023/10/29 18:08:59 [debug] 29#29: *3 close http connection: 21
2023/10/29 18:08:59 [debug] 29#29: *3 reusable connection: 0
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DB6DA90
2023/10/29 18:08:59 [debug] 29#29: *3 free: 000055BC9DB6B230, unused: 136
2023/10/29 18:08:59 [debug] 29#29: accept on 0.0.0.0:4000, ready: 0
2023/10/29 18:08:59 [debug] 29#29: posix_memalign: 000055BC9DB6B230:512 @16
2023/10/29 18:08:59 [debug] 29#29: *6 accept: 192.168.0.1:57462 fd:19
2023/10/29 18:08:59 [debug] 29#29: *6 event timer add: 19: 60000:130773327
2023/10/29 18:08:59 [debug] 29#29: *6 reusable connection: 1
2023/10/29 18:08:59 [debug] 29#29: *6 epoll add event: fd:19 op:1 ev:80002001
2023/10/29 18:08:59 [debug] 29#29: *6 http wait request handler
2023/10/29 18:08:59 [debug] 29#29: *6 malloc: 000055BC9DB6DA90:1024
2023/10/29 18:08:59 [debug] 29#29: *6 recv: eof:0, avail:-1
2023/10/29 18:08:59 [debug] 29#29: *6 recv: fd:19 702 of 1024
2023/10/29 18:08:59 [debug] 29#29: *6 reusable connection: 0
2023/10/29 18:08:59 [debug] 29#29: *6 posix_memalign: 000055BC9DBCA870:4096 @16
2023/10/29 18:08:59 [debug] 29#29: *6 http process request line
2023/10/29 18:08:59 [debug] 29#29: *6 http request line: "GET /.well-known/mercure?topic=test HTTP/1.1"
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'2F:/'
2023/10/29 18:08:59 [debug] 29#29: *6 s:1 in:'2E:.'
2023/10/29 18:08:59 [debug] 29#29: *6 s:2 in:'77:w'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'65:e'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6C:l'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6C:l'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'2D:-'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6B:k'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6E:n'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6F:o'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'77:w'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'6E:n'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'2F:/'
2023/10/29 18:08:59 [debug] 29#29: *6 s:1 in:'6D:m'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'65:e'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'72:r'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'63:c'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'75:u'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'72:r'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'65:e'
2023/10/29 18:08:59 [debug] 29#29: *6 s:0 in:'3F:?'
2023/10/29 18:08:59 [debug] 29#29: *6 http uri: "/.well-known/mercure"
2023/10/29 18:08:59 [debug] 29#29: *6 http args: "topic=test"
2023/10/29 18:08:59 [debug] 29#29: *6 http exten: ""
2023/10/29 18:08:59 [debug] 29#29: *6 posix_memalign: 000055BC9DBB8A00:4096 @16
2023/10/29 18:08:59 [debug] 29#29: *6 http process request header line
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Host: localhost:4000"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Connection: keep-alive"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Cache-Control: max-age=0"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "sec-ch-ua: "Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99""
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "sec-ch-ua-mobile: ?0"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "sec-ch-ua-platform: "Linux""
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Upgrade-Insecure-Requests: 1"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Sec-Fetch-Site: none"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Sec-Fetch-Mode: navigate"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Sec-Fetch-User: ?1"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Sec-Fetch-Dest: document"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Accept-Encoding: gzip, deflate, br"
2023/10/29 18:08:59 [debug] 29#29: *6 http header: "Accept-Language: en-US,en;q=0.9"
2023/10/29 18:08:59 [debug] 29#29: *6 http header done
2023/10/29 18:08:59 [debug] 29#29: *6 event timer del: 19: 130773327
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 0
2023/10/29 18:08:59 [debug] 29#29: *6 rewrite phase: 1
2023/10/29 18:08:59 [debug] 29#29: *6 test location: "/"
2023/10/29 18:08:59 [debug] 29#29: *6 using configuration "/"
2023/10/29 18:08:59 [debug] 29#29: *6 http cl:-1 max:1048576
2023/10/29 18:08:59 [debug] 29#29: *6 rewrite phase: 3
2023/10/29 18:08:59 [debug] 29#29: *6 http script var
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "GET"
2023/10/29 18:08:59 [debug] 29#29: *6 http script regex: "(GET|POST)"
2023/10/29 18:08:59 [notice] 29#29: *6 "(GET|POST)" matches "GET", client: 192.168.0.1, server: _, request: "GET /.well-known/mercure?topic=test HTTP/1.1", host: "localhost:4000"
2023/10/29 18:08:59 [debug] 29#29: *6 http script if
2023/10/29 18:08:59 [debug] 29#29: *6 http script var
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "GET"
2023/10/29 18:08:59 [debug] 29#29: *6 http script value: "OPTIONS"
2023/10/29 18:08:59 [debug] 29#29: *6 http script equal
2023/10/29 18:08:59 [debug] 29#29: *6 http script equal: no
2023/10/29 18:08:59 [debug] 29#29: *6 http script if
2023/10/29 18:08:59 [debug] 29#29: *6 http script if: false
2023/10/29 18:08:59 [debug] 29#29: *6 post rewrite phase: 4
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 5
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 6
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 7
2023/10/29 18:08:59 [debug] 29#29: *6 access phase: 8
2023/10/29 18:08:59 [debug] 29#29: *6 access phase: 9
2023/10/29 18:08:59 [debug] 29#29: *6 access phase: 10
2023/10/29 18:08:59 [debug] 29#29: *6 post access phase: 11
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 12
2023/10/29 18:08:59 [debug] 29#29: *6 generic phase: 13
2023/10/29 18:08:59 [debug] 29#29: *6 http init upstream, client timer: 0
2023/10/29 18:08:59 [debug] 29#29: *6 epoll add event: fd:19 op:3 ev:80002005
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: "X-Forwarded-For"
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "192.168.0.1"
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: "X-Forwarded-Host"
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "localhost"
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: "X-Forwarded-Proto"
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "http"
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: "Host"
2023/10/29 18:08:59 [debug] 29#29: *6 http script var: "freddie"
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: ""
2023/10/29 18:08:59 [debug] 29#29: *6 http script copy: ""
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Cache-Control: max-age=0"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "sec-ch-ua: "Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99""
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "sec-ch-ua-mobile: ?0"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "sec-ch-ua-platform: "Linux""
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Upgrade-Insecure-Requests: 1"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Sec-Fetch-Site: none"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Sec-Fetch-Mode: navigate"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Sec-Fetch-User: ?1"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Sec-Fetch-Dest: document"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Accept-Encoding: gzip, deflate, br"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Accept-Language: en-US,en;q=0.9"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header:
"GET /.well-known/mercure?topic=test HTTP/1.1
X-Forwarded-For: 192.168.0.1
X-Forwarded-Host: localhost
X-Forwarded-Proto: http
Host: freddie
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="118", "Google Chrome";v="118", "Not=A?Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
"
2023/10/29 18:08:59 [debug] 29#29: *6 http cleanup add: 000055BC9DBCB850
2023/10/29 18:08:59 [debug] 29#29: *6 get rr peer, try: 1
2023/10/29 18:08:59 [debug] 29#29: *6 stream socket 20
2023/10/29 18:08:59 [debug] 29#29: *6 epoll add connection: fd:20 ev:80002005
2023/10/29 18:08:59 [debug] 29#29: *6 connect to 127.0.0.1:4001, fd:20 #7
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream connect: -2
2023/10/29 18:08:59 [debug] 29#29: *6 posix_memalign: 000055BC9DB54E60:128 @16
2023/10/29 18:08:59 [debug] 29#29: *6 event timer add: 20: 60000:130773327
2023/10/29 18:08:59 [debug] 29#29: *6 http finalize request: -4, "/.well-known/mercure?topic=test" a:1, c:2
2023/10/29 18:08:59 [debug] 29#29: *6 http request count:2 blk:0
2023/10/29 18:08:59 [debug] 29#29: *6 http run request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream check client, write event:1, "/.well-known/mercure"
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream send request handler
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream send request
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream send request body
2023/10/29 18:08:59 [debug] 29#29: *6 chain writer buf fl:1 s:755
2023/10/29 18:08:59 [debug] 29#29: *6 chain writer in: 000055BC9DBB9818
2023/10/29 18:08:59 [debug] 29#29: *6 writev: 755 of 755
2023/10/29 18:08:59 [debug] 29#29: *6 chain writer out: 0000000000000000
2023/10/29 18:08:59 [debug] 29#29: *6 event timer del: 20: 130773327
2023/10/29 18:08:59 [debug] 29#29: *6 event timer add: 20: 86400000:217113327
2023/10/29 18:08:59 [debug] 29#29: accept on 0.0.0.0:4000, ready: 0
2023/10/29 18:08:59 [debug] 29#29: posix_memalign: 000055BC9DBA0140:512 @16
2023/10/29 18:08:59 [debug] 29#29: *8 accept: 192.168.0.1:57466 fd:21
2023/10/29 18:08:59 [debug] 29#29: *8 event timer add: 21: 60000:130773327
2023/10/29 18:08:59 [debug] 29#29: *8 reusable connection: 1
2023/10/29 18:08:59 [debug] 29#29: *8 epoll add event: fd:21 op:1 ev:80002001
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream process header
2023/10/29 18:08:59 [debug] 29#29: *6 malloc: 000055BC9DB72CB0:4096
2023/10/29 18:08:59 [debug] 29#29: *6 posix_memalign: 000055BC9DB73CC0:4096 @16
2023/10/29 18:08:59 [debug] 29#29: *6 recv: eof:0, avail:-1
2023/10/29 18:08:59 [debug] 29#29: *6 recv: fd:20 137 of 4096
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy status 200 "200 OK"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Content-Type: text/event-stream"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Server: ReactPHP/1"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Date: Sun, 29 Oct 2023 18:08:59 GMT"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header: "Transfer-Encoding: chunked"
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy header done
2023/10/29 18:08:59 [debug] 29#29: *6 xslt filter header
2023/10/29 18:08:59 [debug] 29#29: *6 HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Sun, 29 Oct 2023 18:08:59 GMT
Content-Type: text/event-stream
Transfer-Encoding: chunked
Connection: keep-alive
Access-Control-Allow-Origin: *
2023/10/29 18:08:59 [debug] 29#29: *6 write new buf t:1 f:0 000055BC9DB73E08, pos 000055BC9DB73E08, size: 204 file: 0, size: 0
2023/10/29 18:08:59 [debug] 29#29: *6 http write filter: l:0 f:0 s:204
2023/10/29 18:08:59 [debug] 29#29: *6 http cacheable: 0
2023/10/29 18:08:59 [debug] 29#29: *6 http proxy filter init s:200 h:0 c:1 l:-1
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream process upstream
2023/10/29 18:08:59 [debug] 29#29: *6 pipe read upstream: 0
2023/10/29 18:08:59 [debug] 29#29: *6 pipe preread: 0
2023/10/29 18:08:59 [debug] 29#29: *6 pipe buf free s:0 t:1 f:0 000055BC9DB72CB0, pos 000055BC9DB72D39, size: 0 file: 0, size: 0
2023/10/29 18:08:59 [debug] 29#29: *6 pipe length: 3
2023/10/29 18:08:59 [debug] 29#29: *6 event timer: 20, old: 217113327, new: 217113327
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream request: "/.well-known/mercure?topic=test"
2023/10/29 18:08:59 [debug] 29#29: *6 http upstream dummy handler
Can you help me to solve this error?
Thank you.
Igor.
Hi, first of all, congrats for your amazing project!
I noticed that every connection on the hub register a callback:
public function subscribe(callable $callback): void
{
$this->init();
$this->subscriber->on('message', function (string $channel, string $payload) use ($callback) {
$callback($this->serializer->deserialize($payload));
});
}
After the client close the connection, the callback remains there.
So, after few hours and hundreds of thousands of subscribes, the performance gets terrible, since every publish has to call hundreds of thousands functions, mostly unecessary (subscriber has long gone).
The solution is to listen connection e close events, register an array of subscribers (address => $callback()), and then remove them on connection close.
That's how the original implementation works: https://github.com/dunglas/mercure/blob/main/subscribe.go
Using the RedisTransport Pub/Sub, if there is an error in Redis resulting in a connection closure, there isn't a logic in place to perform a reconnection and potentially recycle the subscribe. I think we are missing a listener for $this->subscriber->on('close') in the RedisTransport's init(), and to handle this issue. We noticed this in practice, in our production environment. Whenever Redis crashes or reboots, Mercure becomes inconsistent and non-functional.
Hi,
I am trying to download this package through Composer.
This is what I get:
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Restricting packages listed in "symfony/symfony" to "6.0.*"
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires freddie/mercure-x 0.2 -> satisfiable by freddie/mercure-x[0.2].
- freddie/mercure-x 0.2 requires clue/framework-x dev-main -> found clue/framework-x[dev-main] but it does not match your minimum-stability.
If I try to set my minimum-stability to "dev"
, here is the error:
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Restricting packages listed in "symfony/symfony" to "6.0.*"
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires freddie/mercure-x 0.2 -> satisfiable by freddie/mercure-x[0.2].
- freddie/mercure-x 0.2 requires react/async dev-main -> found react/async[v1.0.0, 2.x-dev, 3.x-dev, 4.x-dev] but it does not match the constraint.
How can I address this issue?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.