Search code examples
meteor

Meteor.call is very slow when responding back


I am facing performance problem with Meteor.call(). I have a method on server side which gets execute within a millisecond but when I seek a response in the client side, it is taking long to get the response data inside the callback function. Is anyone experience the problem before?

I was using Meteor 1.12.1 and updated to Meteor 2.1.1 hoping to solve the problem by updating but I didn't find any difference.

Update: I am facing issue on all environment (osx, linux, windows).

For eg: This is my server code

Meteor.methods({
   newEntry() {
     //This method is executed within millisecond
   }
})

This is my client code

function submitEntry(data) {
    Meteor.call(
        'newEntry',
        data,
        (error, res) => {
            //Here I am getting the response after long wait. 
        },
    );
}

Can somebody help me on this?


Solution

  • I found the solution. As per the Meteor docs.

    Once the Method has finished running on the server, it sends a result message to the client with the Method ID generated in step 2, and the return value itself. The client stores this for later use, but doesn’t call the Method callback yet. If you pass the onResultReceived option to Meteor.apply, that callback is fired.

    Ref: https://guide.meteor.com/methods.html#advanced-boilerplate

    So if you want your call back to be triggered once the server method return the value then you can use Metor.apply method with the option onResultReceived.

    Meteor.apply(
      "methodName",
      [...params],
      {
        onResultReceived: function() {
          // Whatever you want to do after callback. 
        }
      }