我应该使用什么协议以及它的文档?

时间:2018-10-18 21:14:23

标签: javascript node.js protocols discord.js

因此,我正在尝试构建Discord机器人。这些类型的线程在stackoverflow上往往会被低估,所以我希望这不会发生在我身上。

此特殊功能是我的仪表板问题的临时解决方案。由于glitch.com's托管的性质,http闲置5分钟后应该可以入睡。我已经通过添加一个脚本来解决此问题,该脚本每4分钟ping通URL,但这引起了另一个问题。我认为发生的事情是因为该脚本和bot脚本一直在运行,并且从技术上讲从来没有“完成”,所以它永远不会让任何传入的连接实际加载网页。因此,针对该问题的解决方案是创建一个另一个故障项目,该项目将充当仪表板网站,并从bot项目中传输信息。当然,那我需要创建更多的脚本,这些脚本通过某种Internet协议相互通信。机器人记录的信息都使用node-json-db npm库记录在私有JSON数据库中。

我的问题是:我不知道哪种协议最适合这种情况。即使我确实知道,也必须仔细阅读文档以查找所需的信息。

我的问题是:应该使用什么协议,为此需要阅读什么文档?

我在此处包括了一些代码片段:

机器人的服务器代码(我将在其中添加用于与仪表板通信的脚本):

// 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 :(得分:1)

我也有这个,但是通过简单地将代码放在http循环之前启动Express服务器来解决它。

// 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();