javascript - 如何让 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 做过,但任何人都可以去检查元素并查看密码
谢谢!
解决方案
推荐阅读
- android - 哪种 TextAppearance 样式与应用启动器图标下方的文本匹配?
- python - 为什么 beautifulsoup 没有为这张表返回任何内容?
- android - Firebase + Flutter - 云函数 onCall 导致 Android 应用出现“未经身份验证”错误
- c++ - 字符串附加擦除字符串?
- javascript - 你可以直接用 .then 调用异步函数/方法吗?
- javascript - 更改父元素比例,同时保持子元素比例正确
- mysql - 如何根据 JSON 中的名称将 ID 号从 Angular 传递到 Spring
- vue.js - 如何将带有axios.get()数组数据的渲染条形图导出到vue中更高级别的组件
- mysql - 在 MySQL 中将日期名称转换为日期
- r - 如何按列顺序返回分配给特定行的值?