桥接应用 Bridge App

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

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

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

如使用支持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