У меня есть базовое приложение С, управляющее довольно интенсивным оборудованием. В настоящее время я разрабатываю веб-интерфейс для устройства, большинство его функций - представлять информацию о состоянии пользователю. Таким образом, каждую секунду или около того обновляйте поля на веб-странице с соответствующей информацией (температура, частота кадров, yada yada ...) Устройство запускает linux и имеет apache. Текущая настройка:Лучшая практика для вызова AJAX для запуска кода C?
- Javascript на странице веб-статусе делает вызов AJAX (от setInterval)
- пробегов PHP файла, пишет FIFO
- приложение C читает FIFO, делает некоторые работы на основе входных данных (вероятно, пустыми , имея в виду только дайте мне статистику), пишет обратно FIFO
- PHP файл считывает из FIFO, разбирает, json_encode, эхо
- Javascript разбирает JSON и обновления страницы
Вот где вы пришли ... цель состоит в том, чтобы вывести посредника PHP. Каковы соглашения (если они существуют) для вызовов AJAX программам C? Лучшая практика?
Варианты (насколько я знаю):
- Sockets. Слушайте программу C на конкретном порту .Something similar here.
- Node.js. Я не знаком с этим, я никогда не использовал его. Но моя краткая экспозиция заставляет меня думать, что это может быть очень полезно для этого? Насколько я понимаю, это «javascript на стороне сервера», но это на самом деле C-код? Просто нам нужно понять.
- CGI. Может ли cgi работать с постоянной программой C? Или он загружает программу C с нуля при вызове?
- HTML5 WebSockets?
Любое понимание оценено. Конечно, лучший ответ, возможно, даже не указан выше. Это всего лишь мои знания в этой области. Благодаря!
Это гораздо лучше подходит для форума или чата. Мы здесь, в StackOverflow, сосредоточены на решении конкретных проблем, которые вы застряли. Я не пытаюсь сказать, что ваш вопрос глуп, плох или что-то еще, это просто не в рамках StackOverflow. – orlp
Перейдите по узлу node.js - он поддерживает WebSockets, чтобы предотвратить дорогой опрос 'setInterval'. Это не C, это чистые js. – moonwave99
@ moonwave99 справедливое количество узлов написано на C++;) можно написать расширения узлов в C++, см. Http://www.lupomontero.com/writing-node-js-modules-in-cpp/ –