从有效负载中提取回调函数

时间:2017-08-21 20:53:47

标签: node.js websocket socket.io arduino

  1. 我正在使用Node.js通过socket.emit(eventName[, ...args][, ack]).

  2. 向套接字发送事件
  3. 在客户端,一个Arduino,我使用的是SocketIoClient.h库(链接:https://github.com/timum-viw/socket.io-client)。

  4. 所以服务器正在发送一个事件和一个回调函数

    socket.emit("event",function(x){
       console.log(x);
    })
    

    在客户端的有效负载字段中接收为

    clientSocket.on("event",event);
    void event(const char * payload, size_t length);
    

    如何从客户端调用此回调函数,该函数应该存在于有效负载中?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在尝试使用Socket.IO提供的确认机制(我从您的问题的标签中推断出这一点)。

有关详细信息,请参阅

此机制特定于Socket.IO库,因此如果您不在客户端和服务器端使用它,则无法使用。

作为替代方案,我建议将特定事件专门用于您希望的确认。换句话说,当您的客户端收到您的事件“事件”时,它会向服务器发送一个“已接收”事件作为确认以及应该调用回调的数据。

例如,在您的服务器上,您将拥有:

socket.on("received", function (x) {
    console.log(x); //Will display "Yay! Got it!"
});
socket.emit("event");

并在客户端上像

socket.on("event", function () {
    socket.emit("received", "Yay! Got it!");
});

(我不熟悉您使用的C库,但重点是基础逻辑)。