Какой протокол я должен использовать и какие документы для него? - PullRequest
0 голосов
/ 19 октября 2018

Итак, я пытаюсь создать бот Discord.Потоки этих типов имеют тенденцию к тому, чтобы за них отказывали, так как я надеюсь, что это не произойдет со мной.Из-за особенностей glitch.com хостинга, он должен заснуть после 5 минут бездействия http.Я решил это уже добавив скрипт, который пингует URL каждые 4 минуты, но это вызвало еще одну проблему.Я думаю, что происходит из-за того, что этот скрипт и скрипт бота постоянно работают и никогда не завершаются технически, поэтому никогда не позволяют никакому входящему соединению загружать веб-страницу.Таким образом, мое решение этой проблемы состояло в том, чтобы создать еще один сбойный проект, который будет действовать в качестве веб-сайта панели мониторинга и передавать информацию из проекта бота.Конечно, тогда мне нужно было бы создать больше сценариев, которые общались бы друг с другом через некоторый интернет-протокол.Вся информация, записанная ботом, записывается в частную базу данных JSON с использованием библиотеки node-json-db npm.

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

Мой вопрос: какой протокол я должен использовать, и какие документы мне нужно прочитать?для этого?

Я включил здесь несколько фрагментов кода:

Код сервера бота (куда я бы добавил скрипт для связи с приборной панелью):

// server.js
// where your node app starts

// init project
const express = require('express');
const app = express();
const JsonDB = require('node-json-db');
const db = new JsonDB("myDataBase", true, true);

// we've started you off with Express, 
// but feel free to use whatever libs or frameworks you'd like through `package.json`.

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));

// http://expressjs.com/en/starter/basic-routing.html
app.get('/', function(request, response) {
  response.sendFile(__dirname + '/views/index.html');
});

app.post('/login/c3RvcCBoYWNrZXIh', function(request, response) {
  var servername = request.param('servername');
  var password = request.param('password');
  if (db.getData("/" + servername + "/password") === password) {
response.json(db.getData("/" + servername));
  } else {
response.json(null);
  }
});
// listen for requests :)
const listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + listener.address().port);
});

// to keep the bot alive, since glitch puts projects to sleep after 5 mins of inactivity.
const http = require('http');
setInterval(() => {
  http.get(`http://${process.env.PROJECT_DOMAIN}.glitch.me/`);
}, 270000);

server.js на сайте панели инструментов:

// server.js
// where your node app starts

// init project
const express = require('express');
const app = express();
const request = require('request');

// we've started you off with Express, 
// but feel free to use whatever libs or frameworks you'd like through `package.json`.

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));

// http://expressjs.com/en/starter/basic-routing.html
app.get('/', function(request, response) {
  response.sendFile(__dirname + '/views/index.html');
});



app.post('/login', function(request, response) {
  var servername = request.param('servername');
  var password = request.param('password');
  if ("thereisnopassword" === password) {
    response.sendFile(__dirname + '/dashboard/index.html');
  } else {
    response.sendFile(__dirname + '/views/wronginfo.html');
  }
});

// listen for requests :)
const listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + listener.address().port);
});

1 Ответ

0 голосов
/ 21 октября 2018

Я тоже это имел, но решил, просто поместив код для запуска сервера экспресс до цикла http.

// Require packages
const http = require('http');
const express = require('express');
const app = express();

// Express
app.get("/", (request, response) => {
  response.sendStatus(200);
});
app.listen(process.env.PORT);

// Interval
setInterval(() => {
  http.get(`http://${process.env.PROJECT_DOMAIN}.glitch.me/`);
}, 240000);

// Bot code
const Discord = require('discord.js');
const client = new Discord.Client();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...