JWT, server modüler hale getirildi, Torrent durumu kalıcı hale getirildi.
This commit is contained in:
35
server/modules/websocket.js
Normal file
35
server/modules/websocket.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import { WebSocketServer } from "ws";
|
||||
import url from "url";
|
||||
|
||||
function parseTokenFromRequest(req) {
|
||||
try {
|
||||
const parsed = url.parse(req.url, true);
|
||||
return parsed.query?.token || null;
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export function createWebsocketServer(server, { verifyToken, onMessage }) {
|
||||
const wss = new WebSocketServer({ server });
|
||||
|
||||
wss.on("connection", (ws, req) => {
|
||||
const token = parseTokenFromRequest(req);
|
||||
const decoded = token && verifyToken ? verifyToken(token, "access") : null;
|
||||
if (!decoded) {
|
||||
ws.close();
|
||||
return;
|
||||
}
|
||||
ws.user = decoded;
|
||||
ws.on("message", (msg) => onMessage && onMessage(msg, ws));
|
||||
ws.on("error", (err) => console.warn("🔌 WebSocket error:", err.message));
|
||||
});
|
||||
|
||||
return wss;
|
||||
}
|
||||
|
||||
export function broadcastJson(wss, payload) {
|
||||
if (!wss) return;
|
||||
const data = JSON.stringify(payload);
|
||||
wss.clients.forEach((c) => c.readyState === 1 && c.send(data));
|
||||
}
|
||||
Reference in New Issue
Block a user