Ana içeriğe geç

Uygulama Yapısı

Olay işleyicilerini kaydetme

bilgi

Aşağıda olay işleyicilerinizi nasıl kaydedebileceğinize dair iki öneri bulacaksınız. Lütfen bunların sadece öneriler olduğunu ve kesin kurallar olmadığını unutmayın. Kendi zevkinize göre uyarlayın!

Her dosya kendi olay işleyicilerini kaydeder

Burada, giriş noktası derli toplu tutulur, ancak olay dinleyicileri daha az keşfedilebilir olabilir (güçlü isimlendirme kuralı/ctrl+f yardımcı olacaktır).

index.js

const httpServer = require("http").createServer();
const io = require("socket.io")(httpServer);

const registerOrderHandlers = require("./orderHandler");
const registerUserHandlers = require("./userHandler");

const onConnection = (socket) => {
registerOrderHandlers(io, socket);
registerUserHandlers(io, socket);
}

io.on("connection", onConnection);

orderHandler.js

module.exports = (io, socket) => {
const createOrder = (payload) => {
// ...
}

const readOrder = (orderId, callback) => {
// ...
}

socket.on("order:create", createOrder);
socket.on("order:read", readOrder);
}

Tüm olay işleyicileri index.js dosyasında kaydedilir

Burada, her olay adı aynı yerde bulunur, bu keşfedilebilirlik için harika ama orta/büyük bir uygulamada kontrol edilemez hale gelebilir.

index.js

const httpServer = require("http").createServer();
const io = require("socket.io")(httpServer);

const { createOrder, readOrder } = require("./orderHandler")(io);
const { updatePassword } = require("./userHandler")(io);

const onConnection = (socket) => {
socket.on("order:create", createOrder);
socket.on("order:read", readOrder);

socket.on("user:update-password", updatePassword);
}

io.on("connection", onConnection);

orderHandler.js

module.exports = (io) => {
const createOrder = function (payload) {
const socket = this; // bu yüzden yukarıdaki 'function', çünkü bir ok fonksiyonu çalışmayacak
// ...
};

const readOrder = function (orderId, callback) {
// ...
};

return {
createOrder,
readOrder
}
}
ipucu

Her iki yöntemin de avantajlarını dikkate alarak projenizin ihtiyaçlarına uygun olanı seçin.