Добрый день.
Есть потребность в реализации некоего сервиса.
У нас имееются некоторые устройства, которые переодически отправляют свои данные на определенный TCP порт, который слушается вэб сервером написанном на C, он разбирает пакеты от этих устройств (идентификатор устройства, время подключения) и передает их в сервис, который написан на Python. Питоновский сервис разбирает посылки от сишного сервера и делает "publish" в базу redis по номеру идентификатора устройства (это нужно для реализации push уведомлений на базе tornado+redis. Что-то подобное:
habrahabr.ru/post/128562/).
Есть клиентская часть, которая при подключении к вэб сокетам "подписывается" в базу redis'а, т.е зашел клиент на сайт, у него в доступе есть устройство с идентификатором - 12345, (как из статье с хабра реализована работа с вэбсокетами). Потом устройство с этим идентификатором подключилось к сишному серверу, он в свою очередь обработал это сообщение и передал питоновскому сервису, что устройство с таким идентификатором в данный момент в сети, этот сервис сделал запись в redis базе, которую перехватил tornado сервис))
фух...выглядит довольно запутанно вроде бы...но при такой схеме все вроде как должно работать.
Но тут работает все в одном направлении, т.е подключилось устройство - передало информацию клиенту, а если клиент хочет что-то отправить этом устройству? Как при такой схеме можно сишный сервис заставить отправить внеплановое сообщение подключенного устройства?