sockets funcionais
This commit is contained in:
1 parent
d38cd9e60f
commit
509c51b783
7 files changed
+1044
-134
No files matched your search
@@ -25,6 +25,22 @@ import { sendAction, joinRoom, setUserName } from "./socket.js";
|
||||
const ROOM_NAME = new URLSearchParams(window.location.search).get("room");
|
||||
window.ROOM_NAME = ROOM_NAME;
|
||||
|
||||
const PROJECT_NAME = new URLSearchParams(window.location.search).get("project");
|
||||
|
||||
if (PROJECT_NAME) {
|
||||
// O nome do projeto deve corresponder ao arquivo no servidor, por ex: "mmp/nome-do-seu-projeto-salvo.mmp"
|
||||
// O arquivo 'file.js' já espera que loadProjectFromServer receba apenas o nome
|
||||
// do arquivo dentro da pasta 'mmp/' (ex: 'nome-do-projeto.mmp').
|
||||
console.log(`[MAIN] Carregando projeto do servidor: ${PROJECT_NAME}`);
|
||||
// Adicione a extensão se ela não estiver no link
|
||||
const filename = PROJECT_NAME.endsWith('.mmp') || PROJECT_NAME.endsWith('.mmpz')
|
||||
? PROJECT_NAME
|
||||
: `${PROJECT_NAME}.mmp`;
|
||||
|
||||
// Chama a função de file.js para carregar (que já envia a ação 'LOAD_PROJECT')
|
||||
loadProjectFromServer(filename);
|
||||
}
|
||||
|
||||
// ✅ NOVO: se tem sala na URL, entra já na sala (independe do áudio)
|
||||
|
||||
if (ROOM_NAME) {
|
||||
|
||||
@@ -518,6 +518,27 @@ io.on("connection", (socket) => {
|
||||
});
|
||||
});
|
||||
|
||||
// --- ENDPOINT DE NOTIFICAÇÃO EXTERNA ---
|
||||
app.post("/notify-update", express.json(), (req, res) => {
|
||||
const { updateType } = req.body;
|
||||
|
||||
if (updateType === "samples") {
|
||||
// 1. Emitir o evento para TODAS as salas/clientes.
|
||||
// O evento deve ser algo que seu ui.js entenda.
|
||||
io.emit("system_update", {
|
||||
type: "RELOAD_SAMPLES",
|
||||
message: "Novo Sample/Project adicionado. Recarregando o navegador de arquivos...",
|
||||
});
|
||||
console.log(
|
||||
"[Notificação] Evento 'RELOAD_SAMPLES' emitido para todos os clientes."
|
||||
);
|
||||
|
||||
return res.status(200).send({ success: true, message: "Notificação de Samples/Projetos enviada." });
|
||||
}
|
||||
|
||||
res.status(400).send({ success: false, message: "updateType inválido." });
|
||||
});
|
||||
|
||||
app.get("/", (req, res) => {
|
||||
res.send(
|
||||
"Servidor Backend V6 (Logs Dinâmicos) da DAW colaborativa está no ar!"
|
||||
|
||||
@@ -165,6 +165,18 @@ socket.on("connect_error", (err) => {
|
||||
);
|
||||
});
|
||||
|
||||
socket.on("system_update", (data) => {
|
||||
if (data.type === "RELOAD_SAMPLES") {
|
||||
console.log(`[System Update] Recebida ordem para recarregar samples: ${data.message}`);
|
||||
|
||||
// Certifique-se de que esta função existe e faz o que é esperado:
|
||||
// 1. Fetch dos novos manifestos (metadata/samples-manifest.json etc.)
|
||||
// 2. Renderiza a interface do navegador de samples
|
||||
loadAndRenderSampleBrowser();
|
||||
}
|
||||
// Se houver outras notificações, adicione-as aqui (ex: RELOAD_PROJECTS)
|
||||
});
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// RECEBER ESTADO SALVO DA SALA
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -803,4 +815,4 @@ async function handleActionBroadcast(action) {
|
||||
}
|
||||
|
||||
// EXPORTS
|
||||
export { socket };
|
||||
export { socket };
|
||||
Reference in new issue
Block a user