Communication with Touch Portal

When you setup your plug-in as a dynamic plug-in you are required to have an plug-in application or service running that will connect to Touch Portal using a Socket communication. Touch Portal will listen to calls from your plug-in and will send information to your plug-in.

From version 3 of the plug-in API, all communication is done in UTF-8 encoding.
Touch Portal communicates with JSON formatted strings. So ensure that each call you make to Touch Portal is in the JSON format. Sending a piece of data to Touch Portal should always end with a newline character. This will indicate Touch Portal that it is the whole message.

Pairing your plug-in

Before you can listen to and send message you need to pair your plug-in with Touch Portal. Once the pairing is succesful you will be able to send and listen. To pair your plug-in, follow the steps below.

Step 1: Open socket

First step is to make a connection to the local host using the ip 127.0.0.1 on the port 12136. Touch Portal is listening on this port and when you connect Touch Portal will start listening to the pair request.

If the user uses the external computer connection settings (see Tools) the ip 127.0.0.1 will not connect and neither will localhost. It all depends on what the user has set up in that regard. To support the external computer connection setting you need to provide your user with an option to change the connection information if need be. As this setting is used before a connection with Touch Portal is made, it cannot be set in the plug-in settings within Touch Portal. We suggest to add a config text file or similar to allow the users to customize that part of the plug-in.

Step 2: Pairing the plugin

Once the connection is made, we need to let Touch Portal know who we are. The first thing you need to send is the pairing message (this message is in a JSON format).

{
  "type":"pair",
  "id":"(plugin_id)"
}

This pairing message will let Touch Portal know what plugin is communicating on this socket. Touch Portal will send all communicate actions through this channel with the given id's.

Touch Portal will return an info message when the pairing is successful

{
  "type":"info",
  "sdkVersion":"(SDK version code)",
  "tpVersionString":"(Version of Touch Portal in string format)",
  "tpVersionCode":"(Version of Touch Portal in code format)",
  "pluginVersion":"(Your plug-in version)",
  "currentPagePathMainDevice": "relative path of the page including extension", // API 9.0
  "currentPagePathSecondaryDevices": [ // API 9.0
    {
      "tpDeviceId": "Sim 1.0",
      "currentPagePath": "\\main.tml",
      "deviceName": "iPhone 15"
    }
  ],
}