Workers should only be called using the onInit or onReady method (depending on the situation).
You should never, under any circumstances, call a worker within a build method, in fact, according to official Flutter documentation, builder methods should only receive pure widgets. I have no problem inserting internal variables, but calling methods is definitely prohibitive.
onInit is called when the Controller enters memory.
onReady is called after onInit, and after completion of all current build methods (second to use snackbar, dialogs, routes, etc. in it)
onClose is called before your controller goes to onDelete. onClose is the ideal place to close streams, for example.
Workers are only called when you actually change a variable (except the first time), this means that if you have a variable 3, and send a 3 again, worker will not be triggered, the state in the view (Obx / GetX) will refuse the status update, and nothing will be rebuilt, to avoid unnecessary rebuilds altogether.