Да, это правда, вы действительно открываете новое соединение с базой данных каждый раз, когда отправляется сообщение «отправить».
Так что вам нужно это изменить. Одна возможность может быть, чтобы открыть соединение глобально:
$con = PGconn.connect($dbhost, 5432, "","",$dbname, $dbuser, $dbpass)
Это должно быть сделано после того, как вы инициализировали переменные $ dbname ..., но перед тем, как использовать какие-либо маршруты.
Однако, если вы используете модульную версию sinatra, вместо классической, вы можете объявить переменную экземпляра с помощью
attr_accessor :con
и инициализируйте его перед запуском приложения.