首页 > 解决方案 > 如何让 2 个网站互相交流

问题描述

我在 localhost 上托管了 2 个具有不同端口的网站,我试图让第一个仅用于发送数据,而第二个仅用于接收该数据。早些时候,我只在一个网站上做到了这一点。用户可以登录,登录的用户可以更改数据,并且该数据将发送给所有其他用户。未登录的用户只能查看页面。但是问题太多了。采取那一部分将解决一些问题。我正在尝试在没有后端经验和知识的情况下完成这一切,只是观看一些视频和粘贴代码,对此我很抱歉,我知道这是错误的。我想出了一些东西,但我不能让它工作。所以这是我可怕的代码:

这是用于发送数据的网站的 node.js 代码

var express = require("express");

var app = express();
var server = app.listen(3000);
app.use(express.static('public'));
var socket = require("socket.io");
var io = socket(server);
io.sockets.on('connection', newConnection);

function newConnection(socket)
{
  console.log('Connection: ' + socket.id);
  socket.on('data', dataMsg);
  function dataMsg(data)
  {
    socket.broadcast.emit('data', data);
  }
}

这是网站的 javascript 代码,它将发送运行良好的数据顺便说一句,通过单击某些按钮从 html 调用函数 press1()、press2() 等

let ps = 2.5;
let bl = 3.5;
const socket = io('http://localhost:3000');
function update(data)
{
  buttons[0].time = data.btn11;
  buttons[0].price = data.btn12;
  buttons[1].time = data.btn21;
  buttons[1].price = data.btn22;
  buttons[2].time = data.btn31;
  buttons[2].price = data.btn32;
  buttons[3].time = data.btn41;
  buttons[3].price = data.btn42;
}

let buttons = [];
buttons[0] = new Button(ps);
buttons[1] = new Button(ps);
buttons[2] = new Button(ps);
buttons[3] = new Button(bl);


let arr = [];
arr[0] = [document.getElementById("prviprvi"), document.getElementById('prvidrugi')];
arr[1] = [document.getElementById('drugiprvi'), document.getElementById('drugidrugi')];
arr[2] = [document.getElementById('treciprvi'), document.getElementById('trecidrugi')];
arr[3] = [document.getElementById('cetvrtiprvi'), document.getElementById('cetvrtidrugi')];

var tempD = setInterval( () => {
  var data = {
    btn11 : buttons[0].time,
    btn12 : buttons[0].price,
    btn21 : buttons[1].time,
    btn22 : buttons[1].price,
    btn31 : buttons[2].time,
    btn32 : buttons[2].price,
    btn41 : buttons[3].time,
    btn42 : buttons[3].price
  }
  socket.emit("data", data);
  for(var i = 0; i < 4; i++)
  {
    buttons[i].update();
    buttons[i].show(arr[i][0], arr[i][1]);
  }
},100);

function press1()
{
  buttons[0].press();
}

function press2()
{
  buttons[1].press();
}

function press3()
{
  buttons[2].press();
}

function press4()
{
  buttons[3].press();
}


function Button(tempD1)
{
  this.val = tempD1;
  this.pressed = false;
  this.startingTime = Date.now();
  this.endingTime = Date.now();
  this.hours = 0;
  this.min = 0;
  this.sec = 0;
  this.price = 0;
  this.time = "0:0:0";

  this.show = function(span1, span2)
  {
    span1.innerHTML = this.time;
    span2.innerHTML = this.price + " Din";
  }

  this.update = function()
  {
    if(this.pressed)
    {
      this.endingTime = Date.now();
      this.tempD = this.endingTime - this.startingTime;
      this.sec = parseInt((this.tempD / 1000) % 60);
      this.min = parseInt(((this.tempD / 1000) / 60) % 60);
      this.hours = parseInt((((this.tempD / 1000) / 60) / 60) % 24);
      this.time = this.hours + ":" + this.min + ":" + this.sec;
      this.price = this.hours * 60 * this.val + this.min * this.val;
    }
  }

  this.press = function()
  {
    if(this.pressed == false)
    {
      this.startingTime = Date.now();
      this.pressed = true;
    }
    else
    {
      this.pressed = false;
    }
  }
}

这是接收数据的网站的 node.js

  var express = require("express");

    var app = express();
    var server = app.listen(3001);
    app.use(express.static('public'));
    var socket = require("socket.io");
    var io = socket('localhost:3000');
    io.sockets.on('connection', newConnection);

    function newConnection(socket)
    {
      console.log('Connection: ' + socket.id);
      socket.on('data', dataMsg);
      function dataMsg(data)
      {
        socket.broadcast.emit('data', data);
      }
    }

这是接收数据的网站的 javascript 代码

let ps = 2.5;
let bl = 3.5;
const socket = io('http://localhost:3000');
socket.on('data', update);
function update(data)
{
  buttons[0].time = data.btn11;
  buttons[0].price = data.btn12;
  buttons[1].time = data.btn21;
  buttons[1].price = data.btn22;
  buttons[2].time = data.btn31;
  buttons[2].price = data.btn32;
  buttons[3].time = data.btn41;
  buttons[3].price = data.btn42;
}

var tempD = setInterval( () => {
  for(var i = 0; i < 4; i++)
    buttons[i].show(arr[i][0], arr[i][1]);
}
let buttons = [];
buttons[0] = new Button(ps);
buttons[1] = new Button(ps);
buttons[2] = new Button(ps);
buttons[3] = new Button(bl);

let arr = [];
arr[0] = [document.getElementById("prviprvi"), document.getElementById('prvidrugi')];
arr[1] = [document.getElementById('drugiprvi'), document.getElementById('drugidrugi')];
arr[2] = [document.getElementById('treciprvi'), document.getElementById('trecidrugi')];
arr[3] = [document.getElementById('cetvrtiprvi'), document.getElementById('cetvrtidrugi')];

function Button(tempD1)
{
  this.val = tempD1;
  this.pressed = false;
  this.startingTime = Date.now();
  this.endingTime = Date.now();
  this.hours = 0;
  this.min = 0;
  this.sec = 0;
  this.price = 0;
  this.time = "0:0:0";

  this.show = function(span1, span2)
  {
    span1.innerHTML = this.time;
    span2.innerHTML = this.price + " Din";
  }

  this.update = function()
  {
    if(this.pressed)
    {
      this.endingTime = Date.now();
      this.tempD = this.endingTime - this.startingTime;
      this.sec = parseInt((this.tempD / 1000) % 60);
      this.min = parseInt(((this.tempD / 1000) / 60) % 60);
      this.hours = parseInt((((this.tempD / 1000) / 60) / 60) % 24);
      this.time = this.hours + ":" + this.min + ":" + this.sec;
      this.price = this.hours * 60 * this.val + this.min * this.val;
    }
  }

  this.press = function()
  {
    if(this.pressed == false)
    {
      this.startingTime = Date.now();
      this.pressed = true;
    }
    else
    {
      this.pressed = false;
    }
  }
}

问这个可能太多了,但无论如何我都会这样做:如何允许访问使用正确密码发送数据的那个。当用户访问网站时,他会被要求输入密码,如果他输入正确的密码,他将被进一步转发。我上次用 javascript 做过,但任何人都可以去检查元素并查看密码

谢谢!

标签: javascriptnode.jsexpresssocket.io

解决方案


推荐阅读