1
我正在構建node.js中的一個偏執狂海盜。從一些python代碼開始:我應該如何處理node.js中ZMQ的輪詢?
poller = zmq.Poller()
liveness = HEARTBEAT_LIVENESS
interval = INTERVAL_INIT
heartbeat_at = time.time() + HEARTBEAT_INTERVAL
worker = worker_socket(context, poller)
cycles = 0
while True:
socks = dict(poller.poll(HEARTBEAT_INTERVAL * 1000))
# Handle worker activity on backend
if socks.get(worker) == zmq.POLLIN:
# Get message
# - 3-part envelope + content -> request
# - 1-part HEARTBEAT -> heartbeat
frames = worker.recv_multipart()
Go示例代碼也使用了一個輪詢。
我遇到的問題是zeromq.node doesn't seem to use Pollers。節點中的解決方案是僅使用回調消息嗎?我應該如何處理POLLIN
狀態?
我的猜測是,你是對的。由於node.js以使用基於事件的操作模型而聞名,因此使用回調來響應消息接收聽起來很自然。事實上,它不是「缺少輪詢」,而是「執行完成」。 –
我懷疑是這樣,但是我在如何在節點中實現'socks = dict(poller.poll(HEARTBEAT_INTERVAL * 1000))'的方法是空白的。我想我只是不需要? – jcollum