LINUX.ORG.RU

Сервер на C++ для работы AJAX

 , ,


0

1

Приветствую лорчан!

Есть один вопрос: можно ли связать вместе С++-сервер с AJAX? Моё гугление привело к жабаскрипту с похапе. Можно ли без JavaScript и PHP осуществить обмен без перезагрузки?

Если других вариантов нет, то мой грандиозный план по созданию турбореактивных веб-программ с треском провалится...

Попытки запустить жабаскиптом C++-скрипт закончились предложением скачать бинарник C++ скрипта.

Благодарю за ответы!

★★☆

лол, погугли хоть как SPA работают.
в общих чертах - тебе нужно реализовать сервер, который будет отвечать на запросы из браузерного скрипта, скрипт будет вставлять данные в страничку.
привязка к плюсам излишняя, никакого прироста в скорости не будет. тормозить будет в основном сетевой уровень, доступ к бд и скорость твоей разработки на плюсах.

Deleted
()
Ответ на: комментарий от Deleted

CGI-C++ отлично работает, но нужен динамический обмен данными для построения дружелюбного интерфейса. Может HTML5 что-то похожее имеет?

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Еще раз повторяю - выкидываешь плюсы и пишешь на языке который позволяет быстро разрабатывать. Нет, магии нет, придется писать руками клиентский жс-код, который будет вставлять данные в отображение.

Deleted
()
Ответ на: комментарий от Deleted

Похоже так и придётся. У меня половина программы написана на C++, включая чтение бинарных файлов с данными, поэтому я просто к этой программе прикручу динамическое общение, чтобы никакие тролли не заставили меня перейти на более дорогостоящий тариф хостинга. Скорость очень критична.

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Уоу, а твои чудесные бинарные данные на какую-нибудь бд не ложатся? а то ты говоришь про производительность и тут же собираешься с диска читать, а это +10ms на каждое рандомное чтение. Ну и для общения клиент-сервер могу посоветовать Thrift.

Deleted
()
Ответ на: комментарий от xwicked

CGI-C++ отлично работает

CGI запускает на каждый запрос процесс, и это может быть медленнее PHP. Чтобы то, что ты затеял, имело смысл, нужно писать веб-сервер на C++ или использовать fastcgi.

перейти на более дорогостоящий тариф хостинга.

У тебя же не хайлоад, чему там тормозить? Если ты перестанешь страдать фигней и напишешь свое поделие традиционным путем хоть на том же PHP, оно будет работать достаточно быстро.

goingUp ★★★★★
()

Ты какой-то странный :) И путаешь теплое с мягким. Что такое AJAX? Asynchronous Javascript And Xml. Это даже не столько технология сколько принцип работы.

Чисто технически чем он отличается от обычных запросов к веб серверу? А ничем. Просто при обычном запросе ты, грубо говоря, вводишь адрес в адресную строку браузера. А аякс подразумевает запрос откуда-то из яваскрипта страницы.

На сервере все остается ровно тем же. Хоть глагне аяксом грузи. И на любом языке. На самой странице да, нужен яваскрипт. Не PHP, не HTML5 а именно яваскрипт.

Гугли как работают SPA. Судя по твоим вопросам и путанице в терминах квалификации на данный момент не хватает категорически

anonymous
()

Моё гугление привело к жабаскрипту с похапе

Ты даже в гугл не умеешь, зачем тебе кресты? Ну, хорошо, если так уж прям штырит загугли с++ web framework. Не тысячи их конечно, но есть что потыкать.

no-such-file ★★★★★
()
Ответ на: комментарий от goingUp

У тебя же не хайлоад, чему там тормозить?

Уже проходил через это. Может год назад какие-то жирнющие тролли пытались превысить траффик моего сайта, когда поняли, что мой сайт - чистый html, который перегрузить не возможно. Тогда они решили, что у меня лимит на 1ТБ траффика в месяц и в течении полугода(!) грузили по 1-1,2 ТБ в месяц, потом тоже бросили эту затею. Поэтому, как только у меня появится скриптовый сервис, то велика теоретическая вероятность активизации жира в некоторых мозгах. :D

xwicked ★★☆
() автор топика

fastcgi+nginx без ajax : libwebsockets

zudwa
()

Попытки запустить жабаскиптом C++-скрипт закончились предложением скачать бинарник C++ скрипта.

Как многие заметили, я в программировании новичок и поэтому вопросов будет ещё много. Я нашёл одну ошибку в коде.
У меня в /etc/apache2/sites-available/ok.conf написано:

	ScriptAlias /cgi-bin "/var/www/ok"
, а поэтому указание прямого пути «/var/www/ok/ok» к C++-скрипту недопустимо, правильное обращение через alias «cgi-bin/ok».
Данные отправил в скрипт, принял, как теперь ответить(в какой формате?), чтобы html/ajax принял?

xwicked ★★☆
() автор топика
Последнее исправление: xwicked (всего исправлений: 1)
Ответ на: комментарий от xwicked

Админку себе туда поставь, и будет тот же хост, только без огорожений

JN
()
Ответ на: комментарий от Dark_SavanT

Впопыхах пишу это сообщение. У меня получилось!!! Первый рабочий вариант с использованием jQuery. Подробности позже.
Dark_SavanT задача минимаотными затратами получить максимум эффекта.

xwicked ★★☆
() автор топика

Так как в сети я не нашёл рабочего примера одновременной работы сервера и клиента, то привожу примеры кодов. main.cpp:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>//Для манипулятора setw
#include <locale>
#include <locale.h>

using namespace std;

int main(void)
{
    // input
    setlocale(LC_CTYPE, "ru_RU.UTF-8");
    char nick[256], color[256]; // dangerous
    char *cParameters = '\0';
    cParameters = getenv("QUERY_STRING");
    string sParameters;
    sParameters = string(cParameters);

    ofstream oFile;
    oFile.open("/var/www/ok/1.txt", ios::out);
    oFile.write(sParameters.c_str(), sParameters.length());
    oFile.close();

    sscanf(cParameters, "nick=%s", &nick);
    // output
    printf("Content-type: text/html\n\n"); // HTTP header
//    printf("Hello World!<br />"); // any valid HTML
    printf("%s likes!", nick); // any valid HTML
    return 0;
}
Обязательным является HTTP header, а следующая строка передаётся клиенту.
html:
<html>
 <head>
  <title>
   Title
  </title>
  <META http-equiv=Content-Type content="text/html; charset=utf-8">
 </head>
 <body>
 <TABLE width=100%><TR><TD align=center>
  <img src="images/lab.png"></img><br>

<script src="jquery.js"></script>//Подключаем библиотеку
<script>
function func1()//Своя функция, вызываемая по событию движения мышки
{
$.ajax({
    url: "http://127.0.0.1/cgi-bin/ccgi?nick=wicked",             //URL с параметрами
    success: function (data) {//Принимаемые данные
document.getElementById('result').innerHTML = data;//отображение в div'е "result"
    }
});
}
</script>
  
<form method="get" action="http://127.0.0.1/cgi-bin/ccgi">
<input name="nick" placeholder="nick" type="text"><br>
<select name="color">
<option value="blue">Boy</option>
<option value="red">Girl</option>
</select><br />
<input id="but" type="button" value="Submit" onmousemove="func1()">
</form>
<div id="result">Ждем ответа</div>//здесь отображаются пришедшие от сервера данные.
 </body>
</html> 
Пошёл тестировать jsHTTPRequest...

xwicked ★★☆
() автор топика
Ответ на: комментарий от JN

Честно говоря меня прикалывало, когда вначале они судорожно пытались найти админку у html-сайта. В логах смотрел ошибочные запросы типа ~/admin.php :D

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Только сейчас они засунут >256 символов туда, где тебе написали dangerous и ты получишь переполнение буфера

JN
()
Ответ на: комментарий от JN

Это чуть изменённый пример - об некоторых подобных ошибках я знаю.

xwicked ★★☆
() автор топика

Короче... AngularJS, WebSockets, С++ сервер. Веб-сервер - nginx, для отдачи кода клиента и проксирования запросов на сервер приложения на C++. У меня всё.

n0044h
()

тебе уже выше сказали,что ajax просто формат передаваемого текста

а парсить «ajax» запросы ты можешь хоть вручную(в прямом смысле)

тоесть аяус-просто текст между сервером и веббраузером

текст в формате...гугли википедиютам написано

«сервер» занимается обработкой полученных данных,у тебя данные ТЕКСТ-и парсить его ОДИНАКОГО МЕДЛЕННО что на php что на С++ что на джаве(не скрипт),все упирается в парсинге текста-в возможность ЦП,а ЦП жуткие калькуляторы и по сей день

ты не понимаешь что делаешь в прямом смысле....какимто жутким методом тыка без знания терминов даже....

тебе никто не поможет,ибоделать надо всю работу за тебя....еще и выслушивать безграмотный бред...ужасно

anonymous
()
Ответ на: комментарий от xwicked

кто «они» дурачок....тыб хоть «юзер ид» и ипишники и whois ипишников смотри

гугл/яндекс боты это не они это боты которые сканируют все и раз запрашивали админпхп знасит вебсервер хостинга отдавал такие параметры на проверки....повальная безграмотность

иди вон в майлру нефтебаксы отмывай,там такие и нужны

anonymous
()

Вопрос в принципе закрыт.
P.S. Ожидайте OpenKlest Light Edition 2.0.0 с использованием AJAX!

xwicked ★★☆
() автор топика
Ответ на: комментарий от Deleted

а это +10ms на каждое рандомное чтение.

шёл 2016 год, аналитики ЛОР до сих пор не слышали о существовании ssd и ramfs

anonymous
()
Ответ на: комментарий от anonymous

Анонимус не заметил что у ТС нищеебство головного мозга? Ко-ко-ко хостинг конечно же тебе и ramfs вкрутит и pci-ssd поставит и оверсейлить не будет.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.