- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个通过 putty 使用的虚拟机 (ubuntu 16.04)。我有我的服务器脚本 learning_server.js 的服务器文件夹,它看起来像(node-nodule 是文件夹)`
var version = '2019 March';
console.log('NodeJS Server - '+version);
/* ************************************** */
// ================== load nodejs packages =================
var http = require('http');
var https = require('https')
var async = require('async');
var ip = require("ip");
var url = require('url');
var fs = require('fs');
var request = require('request');
var moment = require('moment');
let fastcsv = require('fast-csv');
// ================== server port =================
var port = 5000;
// ================== load raw data =================
var inputDataFile = "data/AoT_Chicago.complete.2019-03-17/nodes.csv";
let readableStreamInput = fs.createReadStream('./'+inputDataFile);
let csvData = [];
var updatedData = [];
let minVal=1, maxVal=25;
// As the input file is CSV, using fast-csv node module to read the contents and save it to an a array.
fastcsv
.fromStream(readableStreamInput, {headers: true})
.on('data', (data) => {
let rowData = {};
Object.keys(data).forEach(current_key => {
rowData[current_key] = data[current_key];
});
csvData.push(rowData);
})
.on('end', () => {
console.log('No of rows read: ', csvData.length);
// ================== server setup ==================
var server = http.createServer();
server.on('request', request);
server.listen(port, '0.0.0.0');
console.log('Server IP is '+ip.address() + ' port '+port)
console.log('Server is Ready...')
function request(request, response) {
var store = '';
// Start processing the contents of the http request
request.on('data', function(data) { store += data; });
// Once we reach the end of the http request, start creating the response to send to the client.
request.on('end', function() {
try {
response.setHeader('Content-Type', 'application/json');
response.setHeader("Transfer-Encoding", "chunked");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST");
response.setHeader("Access-Control-Allow-Headers", "Content-Type");
// As long as the client sends a valid request with key "data_request" in it, server returns the whole data as JSON string in the response.
var jsonData = JSON.parse(store);
if(jsonData.hasOwnProperty('data_request')){
let retn = JSON.stringify(csvData);
response.end(retn);
console.log('data sent')
updatedData=csvData;
} else if(jsonData.hasOwnProperty('updated_data_request')){
// To simulate the condition where the data sent by the server changes based on key words in the client request,
// data is randomly generated if the request has "updated_data_request" as key.
updatedData=[];
for (i = 0; i < csvData.length; i++) {
var rowData = {};
var val=Math.floor(Math.random() * (maxVal - minVal + 1)) + minVal;
rowData["number"]=val;
updatedData.push(rowData);
}
let retn = JSON.stringify(updatedData);
response.end(retn);
console.log('updated data sent')
} else if(jsonData.hasOwnProperty('deleted_data_request')){
// To simulate the condition where the data sent by the server is same as previous request but some points are removed now.
var index=Math.floor(Math.random() * (updatedData.length));
updatedData.splice(index,1);
let retn = JSON.stringify(updatedData);
response.end(retn);
console.log('deleted data sent')
}
} catch(error) {
// server error, need be re-run
console.log('*** ERROR: Server error ***');
console.log(error);
}
});
}
})
`
我还有一个客户端文件夹,其中包含我的客户端脚本 learning_client.js,它看起来像(node-nodule 是该文件夹)
`var version = '2019 March';
/* ************************************** */
// server's ip address (same machine in this case)
var serverIP = 'localhost';
// Port number on which server is listening
var serverPort = '5000';
// Function to create a request for the server
function reqJSON(jsonData) {
return $.ajax({
type: "POST",
url: "http://"+serverIP+":"+serverPort,
cache: false,
crossDomain: true,
data: jsonData,
processData: false,
dataType: 'json',
headers: {
"Content-Type":"text/plain;charset=UTF-8",
},
timeout: 15000, // 15s
})
};
var colorCounter=0;
colors=['green','blue','red']
updateData("data_request");
function updateData(request_key) {
console.log(request_key);
// Use given key to request the data from server
var request_obj = {};
request_obj[request_key]={}
req = JSON.stringify(request_obj)
console.log(req);
// Create the request
reqJSON(req).then(function(data, error){
// Got the response from the server. "data" contains the data returned by the server
console.log(data);
// Start creating visualization using "data"
var scale = d3.scaleLinear()
.range([5,15])
.domain(d3.extent(data, function(d){return d.number;}))
var svg=d3.select("svg");
svg.style("background-color", "white");
var svg_rect=svg.node().getBoundingClientRect();
// Create circles for each data point
var datapoints=svg.selectAll("circle")
.data(data)
//Enter section: Invoked only for creating the new data points
datapoints.enter().append("circle")
.attr("cx", function(d,i) {return 50*(i+1) + 5;})
.attr("cy", svg_rect.y+svg_rect.height/2)
.attr("r", function(d) {return scale(d.number);})
.style("fill", colors[colorCounter%colors.length]);
//Update section: Invoked only for upating the existing data points
datapoints.transition()
.duration(500)
.attr("cx", function(d,i) {return 50*(i+1) + 5;})
.attr("cy", svg_rect.y+svg_rect.height/2)
.attr("r", function(d) {return scale(d.number);})
.style("fill", colors[colorCounter%colors.length]);
//Exit section: Invoked only for deleting the removed data points.
datapoints.exit().remove();
//Create text showing the number that represents the corresponding circle.
var datapointsText = svg.selectAll("text")
.data(data)
//Enter section
datapointsText.enter().append("text")
.attr("x", function(d,i) {return 50*(i+1) + 5;})
.attr("y", svg_rect.y+svg_rect.height/2+50)
.style("text-anchor", "middle")
.style("font-size", "1em")
.text(function(d) {return d.number;});
//Update section
datapointsText
.attr("x", function(d,i) {return 50*(i+1) + 5;})
.attr("y", svg_rect.y+svg_rect.height/2+50)
.style("text-anchor", "middle")
.style("font-size", "1em")
.text(function(d) {return d.number;});
//Exit section
datapointsText.exit().remove();
colorCounter++;
})
}
`
我有一个包含 html (learning_index.html) 文件的 html 文件夹
`<!doctype html>
<html>
<head>
<title>Simple Client Demo (NodeJS)</title>
<meta charset="utf-8">
<link href="/home/ricky/D3js/css/style.css" rel="stylesheet" media="screen" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v5.min.js" charset="utf-8"></script>
</head>
<body>
<div class="MainVis">
<svg width="1080" height="200"></svg>
</div>
<div class="update">
<input name="updateButton"
type="button"
value="UPDATE"
onclick="updateData('updated_data_request')" />
<input name="deleteButton"
type="button"
value="DELETE"
onclick="updateData('deleted_data_request')" />
</div>
<script type="text/javascript" src="./js/learning_client.js"></script>
</body>
</html>
`
通过 putty 我可以使用 node server/js/learning_server.js
启动服务器输出显示为
`NodeJS Server - 2019 March
No of rows read: 91
Server IP is 10.158.56.133 port 5000
Server is Ready...
`
现在我正在尝试使用本地 Windows 机器打开 learning_index.html 文件
`http://10.158.56.133:5000/D3js/client/html/learning_index.html`
but it shows
`This site can’t be reached 10.158.56.133 took too long to respond.
Search Google for 158 133 5000 D3js client html learning index
ERR_CONNECTION_TIMED_OUT`
你能告诉我我做错了什么吗?
最佳答案
我的第一个猜测是您的 Ubuntu VM 上的防火墙阻止了端口 5000。
默认情况下,您的 ubuntu 机器上应该安装了一个名为“Uncomplicated Firewal (UFW)”的工具。
运行以下命令应该允许远程机器连接到该端口:
sudo ufw allow 5000
运行该命令后,您可以从浏览器重试以查看是否可以访问该页面。
关于javascript - 无法在本地计算机上打开远程计算机上的 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214719/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!