我想知道是否可以使用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) 我一直在用JavaScript编写游戏,现在是时候让它成为多人游戏了.我想使用AJAX长轮询来获得当前的游戏状态,以及实现大厅.
服务器只需要执行基本功能,比如将游戏状态存储在mysql数据库中,检索游戏状态,并格式化记分板.
我认为用PHP编写它是最简单的,但由于它会产生的apache进程数量,这将是一个坏主意.
您有什么推荐的吗?我正在寻找最直接的方法.
编辑:StreamHub似乎很好,但社区版只允许10个并发用户.
Google的GMail服务之所以能够实现这一点,是因为它集成了Google Talk - 而Etherpad(现在的typewith.me)因使用了Google Wave等系统而闻名.当其他用户对页面进行更改时,所有这些系统都会立即有效地更新用户正在处理的页面.很容易告诉服务器发生了变化,但让客户更新自己却更加困难.
这种实时编辑如何工作?它是否只是让客户端每秒多次ping服务器以进行更新?
假设有一个包含动态生成内容的网页 - 比如包含当前已连接浏览器数量的div.当计数在服务器上发生变化时,我希望所有连接的浏览器重新加载计数,以便每个人都能看到增量/减量.
实现这一目标的最佳方法是什么?
关键字:ajax,广播,浏览器,div,jquery
我目前有一段jquery/js代码,它每隔几秒钟(5)运行一次GET请求,寻找可能进入的新数据.
有没有一些方法,我可以让PHP"推"或信号时,新职位的JavaScript代码是可用的,而不是每隔几秒钟检查是否任何新的东西进来了?
另一个例子:我正在为用户调整图像大小.我想向用户显示有关正在进行的过程的实时数据 - 显示诸如"上传到服务器","调整图像大小","存储图像"等消息.
对这样的事情有什么帮助吗?
ajax ×2
comet ×2
jquery ×2
server-push ×2
data-stream ×1
html ×1
javascript ×1
long-polling ×1
node.js ×1
php ×1
push ×1