• Как проксировать WebSockets через nginx?

    Skiphog
    @Skiphog
    Crutch developer
    По идее всё должно работать как в документации. Если слушаете ssl.
    Добавьте как в доке
    location /socket/ {
        proxy_pass http://127.0.0.1:8443;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 70s;
    }

    И спокойно подключайтесь к wss://site.ru/socket/
    Ответ написан
    Комментировать
  • Как проксировать WebSockets через nginx?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Настройка аналогична, просто добавьте в серверный блок listen ssl и остальные необходимые параметры - сертификат и т. д.
    Ответ написан
    3 комментария
  • Как слушать 443 порт через express?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Поставьте Nginx кроме простейшей Настройки сертификата будете ещё и статику кешировать.
    Ответ написан
    2 комментария
  • Как соединить домен,cloudflare и VDS?

    dyuriev
    @dyuriev
    A posteriori
    также я прописал NS провайдера VDS

    это лишнее
    NS указывается только у регистратора домена (как вы написали, "там где покупал домен"), в вашем случае - NS сервера cloudflare

    Далее в Cloudflare создаете А-запись с IP адресом VDS и отмечаете/не отмечаете что надо проксировать трафик через Cloudflare, там же где А-запись вбиваете.
    Ответ написан
    7 комментариев
  • Как скрыть исходники проекта на React JS?

    YaroslavHub
    @YaroslavHub
    Создай в корне на уровне package.json файл переменных окружения .env и пропиши в нём строку отключения отрисовки структуры приложения GENERATE_SOURCEMAP=false.
    Ответ написан
    Комментировать
  • Как получить значение ячейки через запрос?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    GET https://sheets.googleapis.com/v4/spreadsheets/1d2UU5VcbgF6iDW58WA242BdIisRd7pqDoENm963YCcM/values/B4 HTTP/1.1
    
    Authorization: Bearer [YOUR_ACCESS_TOKEN]
    Accept: application/json


    Где [YOUR_ACCESS_TOKEN] - токен Google OAuth 2.0
    Ответ написан
    Комментировать
  • Как реализовать определённые функции в кликере?

    mwizard
    @mwizard
    Ознакомьтесь с разделом про server reconciliation вот в этом цикле статей — https://www.gabrielgambetta.com/client-side-predic... — и для общего образования прочитайте его целиком, там совсем чуть-чуть и все написано очень простым языком.
    Ответ написан
    1 комментарий
  • Как реализовать определённые функции в кликере?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Зачем вообще данные с сервера отображать на клиенте? Считайте все локально - и клики и прибавления по таймеру. Единственная причина, которую я могу придумать, зачем вам это может быть нужно - это борьба с читерами.

    Для этого отправляйте раз в секунду все действия пользователя на сервер (клики, нажатия кнопок покупок бонусов). Сервер должен повторить всю логику (прибавить клики, автоматические таймеры, включить всякие бонусы, если очков хватает) и отправить назад результирующие очки пользователя к той секунде. Клиент должен при отправке запомнить, сколько у него было очков и при получении ответа сравнить его с тем, что получил от сервера. Если есть расхождение то разница прибавляется к текущему количеству очков.

    Т.е. вся логика на клиенте, но она продублированна и проверяется на сервере (например, проверка, что нет 10^20 кликов за секунду, что очков хватало на покупку апгрейда).

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

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

    Если же вы хотите какую-то формулу или логику спрятать исключительно на сервере, то без задержек тут ничего не сделать.
    Ответ написан
    Комментировать
  • Как сделать онлайн кликер?

    dmc1989
    @dmc1989
    Есть варриант поставить счетчик при первом клике, и засекать количество, к примеру, за 200мс, а потом отправлять. Потом обновить, и снова засекать. Получаеться, что мы сможем отправлять все клики, но для сервера нагрузка будет не большой.
    Ответ написан
    2 комментария
  • Как подключить к node js ssl от cloudflare?

    @nastyskafomka Автор вопроса
    Проблема решена.

    Как всегда виновата невнимательность, и желание "все и сразу".

    Для того, чтобы подключить к node сертификат от Cloudflare нужно выполнить следующие действия:

    1) Сгенерировать TLS сертификат от Cloudflare. Для этого переходим в панель управления доменом, далее Crypto и там находим пункт Origin Certificates
    5cae399254f58892146189.png
    2) Создать TLS сертификат, выбрав следующие параметры:
    5cae3a04086c4580548489.png
    (Срок можно выбрать другой)
    3) Теперь на сервере создать папку где будут лежать наши сертификаты и создать в ней файлы:
    your-domain.ltd.pem и your-domain.ltd.key
    Где your-domain.ltd - ваш домен.
    4) В your-domain.ltd.pem вставить первый ключ
    Пример первого ключа
    5cae3ac918b0d339617028.png

    5) В your-domain.ltd.key вставить второй ключ
    Пример второго ключа
    5cae3b0c2d009139184631.png

    6) Далее на сервере подключить их:
    var app = require('express')();
    
    var options = {
        key: fs.readFileSync('ssl/your-domain.ltd.key'), // PRIVATE KEY
        cert: fs.readFileSync('ssl/your-domain.ltd.pem') // CERTIFICATE
    };
    
    var http = require('https').createServer(options,app);


    Далее, нужно чтобы сервер работал на SSL порте, который использует Cloudflare (ссылка)

    spoiler

    Может это не обязательно, но мы сделали именно так
    5cae3c320abd0767586155.png
    spoiler

    На http не обращайте внимания, просто так получилось.


    Вот и все, теперь можно запустить node.js сервер и перейти по адресу your-domain.ltd:port
    spoiler
    По идее...

    И мы успешно попадем на сервер.

    Надеюсь это кому-нибудь поможет.
    Ответ написан
    2 комментария
  • Как изменить URL на URL с портом?

    @ComodoHacker
    Редирект 301, например.
    Но 80 порт должен кто-то слушать.
    Ответ написан
    Комментировать
  • Как изменить URL на URL с портом?

    @alex1478
    Вам нужно настроить nginx или apache2 в режиме обратного прокси.
    Простой пример для nginx:
    location ^~ /8080/ {
                    proxy_pass         http://127.0.0.1:8080/;
                    proxy_redirect     default;
            }
    Ответ написан
    Комментировать
  • Как отправить тело запроса с переносами строк?

    gscraft
    @gscraft
    Программист, философ
    Отображается без переносов где? Перенос строки — это символы, отображаемые собственно как новая строка, в Windows — \r\n (возврат каретки и новая строка по подобию печатных машин), практически во всех остальных случаях — \n. Вы можете легко проверить, что содержится в textarea, открыв текст в Блокноте, который не поддерживает \n. Ну или программным путем, /\r\n+/.test(textareaText):
    xpkTcSh.png
    По всей видимости отображение на каком-то из этапов меняет подход к переносам строк (где просматриваете строки базы данных?), но если программно этого не меняете, текст должен оставаться в том же виде.
    Ответ написан
    5 комментариев
  • Почему у ноутбука mAh столько же,сколько и у телефона?

    GavriKos
    @GavriKos
    Ну так ноутбук и живет меньше от этой батареи. +вольтаж другой
    Ответ написан
    Комментировать
  • Почему у ноутбука mAh столько же,сколько и у телефона?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что ёмкость аккумулятора измеряется в ватт-часах (Wh).
    Для этого надо указанные ампер-часы (Ah) умножить на напряжение, выдаваемое аккумулятором.
    У аккумулятора смартфона номинальное напряжение, ЕМНИП, 3.7V. Соответственно, ёмкость будет 3.7*4 = 14.8Wh.
    Аккумулятор ноутбука обычно имеет напряжение 11.1V. Значит ёмкость будет 11.1*4 = 44.4Wh.
    Ответ написан
    1 комментарий
  • На чём написаны калькуляторы CASIO?

    @402d
    начинал с бейсика на УКНЦ в 1988
    Оригинальный исходный код прошивки я думаю найти не получиться.
    https://wiki.planet-casio.com/en/Fx-9860G_SDK
    По ссылке вики SDK для разработки своих программ на си под их графический калькулятор

    edu.casio.ru/download/fx9860g_sdk_starters_guide.pdf - руководство по созданию приложений.
    Ответ написан
    Комментировать
  • Как получить 2 куска текста XPATH?

    DevMan
    @DevMan
    примерно так
    //div[@class="im_dialog_peer"]/span[normalize-space(text()) = 'Telegram']/../..//div[@class="im_dialog_date"]/text()
    Ответ написан
    3 комментария
  • Как скопировать local storage?

    hzzzzl
    @hzzzzl
    storage = {...localStorage}
    
    ...
    // перенести объект JSON.stringify(storage) в другой браузер
    ...
    
    for (const[key, val] of Object.entries( JSON.parse(storage) )) {
      localStorage.setItem(key, val)
    }
    Ответ написан
    Комментировать
  • Как прикрепить декораторы в цикле?

    @javedimka
    Хочу сока
    Можно просто почитать как работают декораторы и что есть синтаксический сахар
    async def handler(event):
            word = event.message.to_dict()['message']
            if (word[:18] == "Код подтверждения:"):
                print(word)
    
    for client in clients:
        handler = client.on(events.NewMessage)(handler)
    Ответ написан
    Комментировать
  • Какую механическую клаву посоветовали бы вы?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Razer BlackWidow X Tournament Chroma

    Уже год радует меня.
    Ответ написан
    2 комментария