Je savais qu'un client pouvais changer beaucoup de fois d'avis, je savais pas que c'était aussi le cas du p***** de dev frontend

This commit is contained in:
jeffcheasey88 2025-01-28 21:21:44 +01:00
parent fbb8514afd
commit 2d03ccbe3e

View file

@ -3,11 +3,13 @@ package dev.peerat.backend.routes;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import dev.peerat.framework.Context; import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader;
import dev.peerat.framework.HttpWriter; import dev.peerat.framework.HttpWriter;
import dev.peerat.framework.Injection; import dev.peerat.framework.Injection;
import dev.peerat.framework.Locker; import dev.peerat.framework.Locker;
import dev.peerat.framework.Locker.Key; import dev.peerat.framework.Locker.Key;
import dev.peerat.framework.Route; import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class EventSSE{ public class EventSSE{
@ -17,10 +19,9 @@ public class EventSSE{
this.locker = locker; this.locker = locker;
} }
@Route(path = "^/group/event/([a-zA-Z0-9&|!?{}\\[\\]%/*\\-+=:;,_#@ ]{3,100})$") @Route(path = "^/group/event/$", websocket = true)
public void connect(Matcher matcher, Context context, HttpWriter writer) throws Exception { public void connect(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception {
String group = matcher.group(1); String group = reader.<JsonMap>readJson().get("group");
context.response(200, "Content-Type: text/event-stream");
Key key = new Key(); Key key = new Key();
@ -29,7 +30,9 @@ public class EventSSE{
while(true){ while(true){
GroupMessage message = locker.getValue(key); GroupMessage message = locker.getValue(key);
if(message.getGroup() == null || message.getGroup().equals(group)){ if(message.getGroup() == null || message.getGroup().equals(group)){
writer.write("data: "+message.getMessage()+"\n\n"); JsonMap send = new JsonMap();
send.set("message", message.getMessage());
writer.write(send.toString()+"\n");
writer.flush(); writer.flush();
} }
locker.lock(key); locker.lock(key);