服务器到客户端更新,无需客户端Websocket编程的持续/持久请求

也许我没有完全理解相关问题的答案。 我得到了长时间的投票,颠倒了Ajax的概念,但事情是这样的:

我目前的设置是在我的本地单位,我是客户,我是服务器。 我可以成功地build立到我的服务器的连接,一旦连接build立,我可以发回给我的客户端一个消息,现在另一个场景来了,我只想服务器build立连接后不断更新我的客户端。 为了简单的目的,比方说,我希望我的客户端更新服务器的时间,所以每一分钟的变化,服务器发送最新的时间到客户端(假设连接已经build立)。

我正在使用node.js和socket.io。 以下是我的代码:

客户:

<!DOCTYPE html> <meta charset="utf-8" /> <title>WebSocket Testing</title> <script src="/socket.io/socket.io.js"></script> <script language="javascript" type="text/javascript"> var socket = new io.connect("http://127.0.0.1:8080"); socket.on('connect', function(){ // socket.on('news', function (data) { // socket.emit('my other event', { my: 'data' }); socket.on("test",function(data){ alert(data); }); socket.onmessage = function (event) { console.log(event.data); } }); console.log(socket); </script> <h2>WebSocket Test</h2> <div id="output"></div> </html> 

服务器:

 var socketOptions = { transportOptions: { 'xhr-polling': { closeTimeout: 20000000, //20 mins timeout: 20000000 //20 mins } } }; var app = require('http').createServer(handler) , url = require('url') , io = require('socket.io').listen(app,socketOptions) , fs = require('fs') app.listen(8080); function handler (req, res) { var path = url.parse(req.url).pathname; fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { console.log("ERROR: "+err) res.writeHead(500); return res.end('Error loading index.html'); } // res.writeHead(200); //res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'}) res.writeHead(200, {'Content-Type': 'text/html'}); console.log("THIS IS IT"); res.end(data); }); } console.log(io); io.sockets.on('connection', function (socket) { // socket.send("testing lang kung nagsesend"); // console.log("connection"); // socket.emit('news', { hello: 'world' }); // socket.on('my other event', function (data) { // console.log(data); // }); socket.emit("test","Test connection message established,send and received"); }); 

我如何处理我的服务器代码? 我可以注意到,几乎所有的代码示例都是用php格式的。

在callback函数中创build一个setInterval,你可以在connection被触发后的几秒钟内完成设置。 你正在寻找这样的东西:

 io.sockets.on('connection', function (socket) { setInterval(function(){ // do a socket emit here to give data to client },1000); }