桥接应用 Bridge App

ProtoPie Connect的一大强悍功能在于不仅能在所管理的Pie之间进行消息通讯,还能接收从外部设备发来的消息。当前支持Socket.IO的所有平台均可向ProtoPie Connect发送消息。有一类应用程序借助Socket.IO将外部设备或第三方应用程序中发生的事件以及消息向ProtoPie Connect进行发送,我们将此类应用程序称为桥接应用(Bridge App)。

[object Object]

桥接应用有多种实现形式,有的是对硬件上发生的事件进行捕获,有的从服务器上直接接收数据,有的以独立应用程序的形式存在。桥接应用借助Socket.IO将发生的事件、接收到的数据等转换为ProtoPie Connect可接收的数据形式并进行发送。

下图中,桥接应用通过设备驱动接收到Logitech G29的USB通信数据,然后借助Socket.IO将设备事件转换为JSON形式的数据并向ProtoPie Connect发送。

[object Object]

如使用支持JSON API的编程环境(语言)向ProtoPie Connect发送消息,ProtoPie Connect会向列表中已有的Pie、桥接应用、外部设备等进行消息广播。向ProtoPie Connect发送消息的格式为如下图所示的JSON格式。

{
  messageId: "messageId",
  value: "value",
};

如下所示是在Node.js中借助Socket.IO与ProtoPie Connect之间进行消息收发的示例代码。如需更详细的说明请参考GitHub

// socket.io-client must be installed by `npm install socket.io-client`
const io = require('socket.io-client');

function main(address) {
  // open connection to ProtoPie Connect with address
  const socket = io(address);

  // event for socket connected
  socket.on('connect', () => {
    console.log('Socket connected', address);
  });

  // event for socket disconnected
  socket.on('disconnect', () => {
    console.log('Socket disconnected');
  });

  // receive message to ProtoPie Connect
  socket.on('ppMessage', (message) => {
    console.log(
      'Message form ProtoPie Connect',
      message.messageId,
      message.value
    );
  });

  setInterval(() => {
    // message JSON format
    const message = {
      messageId: 'time',    // messageId for ProtoPie Connect
      value: new Date(),    // value for ProtoPie Connect
    };

    console.log(
      'Message to ProtoPie Connect',
      message.messageId,
      message.value
    );

    // send message to ProtoPie Connect with event name 'ppMessage' and message
    socket.emit('ppMessage', message);
  }, 1000);
}

main('http://localhost:9981');
Back To Top