【问题标题】:Meteor.methods with ZeroMQ REQ/REP never returns answer带有 ZeroMQ REQ/REP 的 Meteor.methods 永远不会返回答案
【发布时间】:2014-01-12 08:03:35
【问题描述】:

这是我在服务器上的方法:

Meteor.methods({
    dotest: function (ruleid) {
        console.log('Do test called with argument : %s', ruleid)
        var socket = zmq.socket('req')
        socket.connect('tcp://localhost:5555')
        socket.send(ruleid)
        socket.on('message', function(data) {
            console.log('Reply: ' + data);
            return data
        })
    }
})

当然,它不起作用,因为在 dotest 方法结束后会触发“return”。 我该如何解决这个问题?

【问题讨论】:

    标签: javascript node.js meteor zeromq


    【解决方案1】:

    这可以通过Futures来完成!

    Meteor.methods({
        dotest: function (ruleid) {
            var Future = Npm.require("fibers/future");
            var fut = new Future();
    
            console.log('Do test called with argument : %s', ruleid);
            var socket = zmq.socket('req');
            socket.connect('tcp://localhost:5555');
            socket.send(ruleid);
            socket.on('message', function(data) {
                console.log('Reply: ' + data);
                fut['return'](data);
            });
            return fut.wait();
        }
    });
    

    我没有对此进行测试,但它应该可以工作。编码愉快。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2016-11-17
    • 1970-01-01
    • 2020-07-17
    • 2013-06-07
    • 2014-10-11
    • 2017-02-13
    相关资源
    最近更新 更多