All files / src/routes/orders_routes orders_watchNewOrders_get.js

100% Statements 11/11
100% Branches 0/0
100% Functions 6/6
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29      77x   77x 3x 1x           1x           1x 1x 1x     1x 1x      
import asyncRouteHandler from "../../utilities/asyncRouteHandler.js";
import eventEmiter from "../../utilities/eventEmiter.js";
 
let newOrdersReceivers = [];
 
eventEmiter.on("new-order", (order) => {
    newOrdersReceivers.forEach((receiver) => {
        receiver(order)
    })
})
 
export default asyncRouteHandler(
    async function orders_watchNewOrders_get(_req, res) {
        res.writeHead(200, {
            'Content-Type': 'text/event-stream',
            'Cache-Control': 'no-cache',
            'Connection': 'keep-alive'
        });
 
        const receiverIndex = newOrdersReceivers.length
        newOrdersReceivers.push((order) => {
            res.write(`data: ${JSON.stringify(order)}\n\n`)
        })
 
        res.on("close", () => {
            newOrdersReceivers = newOrdersReceivers.filter((_, index) => index !== receiverIndex)
        })
    }
)