反映了来自其他计算机的客户端操作

Reflected client actions from a different computer

本文关键字:计算机 客户端 操作 其他      更新时间:2023-09-26

我正在写我的新博客,目前服务器端是NodeJS(使用expressjs),我在我的计算机上托管服务器。

为了快速开发,我使用了GulpJS。

在我解释奇怪的事情之前。让我说两个端口(3000和80都打开)。

  • Gulp版本:3.9.0
  • NodeJS版本:0.10.35
  • 浏览器同步:2.7.12

这是我的index.js,我用node index.js启动服务器。

var express = require('express');
var app = express();
app.use(express.static('public'));
app.set('base', '/public');
app.get('/', function(req, res) {
    res.sendfile('index.html');
});
var server = app.listen(80, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log('Example app istening at http://%s:%s', host, port);
});

现在这是我使用的gulpfile.js的重要部分(为了简单起见,我删除了大多数任务):

var sync = require("browser-sync").create();
gulp.task('browser-sync', function() {
    sync.init({
        proxy: "http://localhost:80",
        browser: "chrome",
        port: 3000
    });
});

所以,在我的博客上工作了一段时间后,我决定把它展示给一个朋友,当NodeJS服务器正在运行,Gulp正在监视一些htmljssass文件时,我把我的domain.ml:3000发送给我的朋友,域指向我的外部IP,端口3000是由gulpfile.js定义的代理引起的。

我无法解释的奇怪事情:

当我的朋友玩这个网站时,他的行为反映给了我,这意味着当他点击一个src属性设置为#的链接时,我们都访问了domain.ml:3000,在我这边,url更改为domain.ml:3000/#,我还有一个链接,当点击时会打开一个选项卡(转换是由一些js+css转换完成的),当选项卡在他的一侧打开时,它也在我的一侧

我想这是browser-sync代理的问题,但我无法解释也无法理解这种行为,如果有人能帮我弄清楚,我会非常感激,祝你今天愉快。

这基本上就是浏览器同步的目的。你可以同步浏览器来同时测试同一个应用程序。一旦你做了一个gullow构建并提供该构建,而不是你的"开发版本",这种情况就会改变。

这就是交易,浏览器同步通过您的代理将哈希url发送到您的服务器(当您单击带有"#"的链接时),该片段有不同的处理方式。

端口80上的服务器现在是一个木偶,正在重播浏览器同步会话中的所有URLS,你们都连接在浏览器同步端口3000上,当其中一方发送哈希更改时,你们都会收到新位置,因为端口80上服务器现在也有了新位置。