我想知道是否可以使用Node.js将数据从服务器流式传输到客户端.我想向Node.js发布一个AJAX请求,然后保持连接打开并不断地将数据流传输到客户端.客户端将收到此流并持续更新页面.
作为这个答案的更新- 我无法让这个工作.在response.write你打电话之前不发送close.我已经设置了一个示例程序,用于实现此目的:
Node.js的:
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var currentTime = new Date();
setInterval(function(){
res.write(
currentTime.getHours()
+ ':' +
currentTime.getMinutes()
+ ':' +
currentTime.getSeconds()
);
},1000);
}).listen(8000);
Run Code Online (Sandbox Code Playgroud)
HTML:
<html>
<head>
<title>Testnode</title>
</head>
<body>
<!-- This fields needs to be updated -->
Server time: <span id="time"> </span>
<!-- import jQuery from google -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<!-- import jQuery -->
<script type="text/javascript">
$(document).ready(function(){
// I …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用客户端上的 JQuery 和服务器上的 node.js 运行基本的 Ajax 调用。客户端从与处理 Ajax 请求的服务器相同的服务器加载 - 但我在客户端收到此错误:
“XMLHttpRequest 无法加载 .... 请求的资源上不存在 'Access-Control-Allow-Origin' 标头。Origin ......因此不允许访问。”
我认为这里肯定不会违反同源政策吗?也许本地主机被区别对待?
服务器:
httpListen.createServer(function (req, res) {
....
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('_testcb(\'{"message": "Hello world!"}\')');
}
Run Code Online (Sandbox Code Playgroud)
客户:
$.ajax({
url: "http://127.0.0.1:1337/",
data : {formType:"ajaxTest", key1:"val1", key2:"vall2"},
formType:"ajaxTest",
jsonpCallback: "_testcb",
cache: false,
timeout: 5000,
success: function(data) {
$("#textBox").text("replied");
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
这是在此处第 1 个回复的指导方针之后编写的: 如何使用 jQuery ajax 调用与 node.js,但我仍然收到上述错误。
编辑:发现问题:使用 localhost …